c++ - 将字符转换为字节 C++

标签 c++ byte type-conversion

我正在尝试将 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/

相关文章:

c++ - 构造函数和析构函数必须是虚的?

javascript - 如何强制 parseInt 在任何字符串出现时返回 NaN?

c++ - 使用 -g 和不使用 -DNDEBUG 选项的链接时间非常长

C++:是否有更简洁的方式来表示自定义数字类型?

c++ - std::map 可以包含对构造函数的引用吗?

java - 将 int 转换为 int 数组

c# - 使用带空值的 double.Parse

c++ - 宏在 gcc 中出现问题

c++ - 如何在C++中设置一个字符?

java - 为什么 jvm 在压入堆栈之前将 byte 和 short 扩展为 int?