我正在尝试将 char arry 转换为 Byte(微软类型,我正在使用 visual studio)。事实是我要填一个DCB串行端口通信的结构,我从 .ini 文件中取回信息。数据保存在 char 临时缓冲区中。 DCB 端口设置中的某些值需要以字节为单位。我尝试了很多方法都没有成功。可以从 .ini 中很好地检索数据,但我在将它们转换为字节时遇到了一些问题。
我可以将数值转换为整数,但它们也必须是字节。
而process->read方法是GetPrivateProfileString的个人实现。
char res[10];
printf("\nReading port settings of %s\n", comName);
processFileConfig->read(comName, "baudrate", "9600", res, sizeof(res));
baudr = atoi(res);
processFileConfig->read(comName, "parity", "N", res, sizeof(res));
parity = (BYTE)res;
std::cout << "size of Parity : ";
std::cout << sizeof(parity) <<std::endl;
std::cout << "content of Parity : ";
std::cout << parity <<std::endl;
processFileConfig->read(comName, "byteSize", "8", res, sizeof(res));
byteSize = atoi(res);
std::cout << "biteSize : ";
std::cout << byteSize <<std::endl;
processFileConfig->read(comName, "stopBits", "1", res, sizeof(res));
stopBits = atoi(res);
std::cout << "stopBits : ";
std::cout << stopBits <<std::endl;
portSettings.DCBlength = sizeof(portSettings);
portSettings.BaudRate = baudr; //this one is OK
portSettings.ByteSize = byteSize; // returns
portSettings.Parity = parity; // returns nothing
portSettings.StopBits = stopBits; // returns a smiley :)
还有我的 file.ini
的例子:
[COM1]
baudrate=15000
byteSize=8
stopBits=1
parity=N
编辑:res 缓冲区从 .ini 返回正确的值。这边一切正常。我只需要将最后三个值(byteSize、stopBits 和 parity)转换为 unsigned long。
最佳答案
您当前的代码试图将指向缓冲区的指针转换为 BYTE
。您需要做的是使用 strtoul()
解析缓冲区,并将 that 转换为 BYTE
。
关于c++ - 将字符转换为字节 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21848831/