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

C++ 将字符转换为字节c++;,c++,byte,type-conversion,C++,Byte,Type Conversion,我正在尝试将字符数组转换为字节(microsoft类型,我正在使用visual studio)。事实上,我想填写一个串口通信的结构,然后从一个.ini文件中获取信息。数据保存在char临时缓冲区中。DCB端口设置中的某些值需要以字节为单位。我尝试了很多方法都没有成功。从.ini中很好地检索到了数据,但是我在将它们转换为字节时遇到了一些问题 我可以将数值转换为整数,但它们也必须是字节 process->read方法是GetPrivateProfileString的个人实现 char res[10]

我正在尝试将字符数组转换为字节(microsoft类型,我正在使用visual studio)。事实上,我想填写一个串口通信的结构,然后从一个.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 :)

编辑:res缓冲区从.ini返回正确的值。这边一切都好。我只需要将最后三个值(字节大小、停止位和奇偶校验)转换为无符号长。

当前代码尝试将指向缓冲区的指针转换为
字节。您需要做的是使用
strtoul()
解析缓冲区,并将其转换为
字节

好的,我知道了。最后很容易,我不知道为什么我要阻止它^^ 我创建了一个中间无符号长变量:

processFileConfig->read(comName, "parity", "N", res, sizeof(res));
unsigned long parity_ul = res[0];
parity = parity_ul;
std::cout << "parity : "; // 78 for 'N'
std::cout << parity <<std::endl;

portSettings.Parity = parity;

std::cout << "Parity : ";
std::cout << portSettings.Parity <<std::endl; // 'N' that's OK !
processFileConfig->read(comName,“奇偶校验”,“N”,res,sizeof(res));
无符号长奇偶校验_ul=res[0];
奇偶性=奇偶性;

你所说的“一些问题”是什么意思,你必须具体点。“WinAPI字节”上的简单google指向“字节-字节(8位)。该类型在WinDef.h中声明如下:typedef unsigned char Byte;”。我甚至不确定你会遇到什么问题。“一些问题”:嗯,我不能转换它:p我还看了msdn字节的未命名长。我试着将返回的缓冲区(res)转换成无符号长缓冲区。好吧,斯塔克先生,你似乎连什么地方出了问题都不知道。你有点无能为力。我很想说“是的,你可以!你只需要相信你自己。”但是,请专业人士“发布错误消息,或预期和实际输出。最好是一个工作的sscce。”xD我尝试了很多事情,但我总是对数据类型转换感到迷茫。如果你有一个额外的链接来解释我的想法;)为了重新解释我的问题,我想把一个字符数组转换成一个无符号长值,你知道我会帮你读这些数字,对吗?
processFileConfig->read(comName, "parity", "N", res, sizeof(res));
unsigned long parity_ul = res[0];
parity = parity_ul;
std::cout << "parity : "; // 78 for 'N'
std::cout << parity <<std::endl;

portSettings.Parity = parity;

std::cout << "Parity : ";
std::cout << portSettings.Parity <<std::endl; // 'N' that's OK !