我正在制作一个程序来与串行设备通信。设备正在给我十六进制格式的数据。我得到的十六进制格式是FFFFFF84
,但我有兴趣提取最后两位84
。那我怎么提取呢?
while(1)
{
int i;
char receivebuffer [1];
read (fd, receivebuffer, sizeof receivebuffer);
for ( i = 0; i < sizeof (receivebuffer); i++)
{
printf("value of buffer is %X\n\n", (char)receivebuffer[i]);
}
return 0;
}
我正在接收缓冲区中获取数据。请帮忙谢谢。
最佳答案
您只是感到困惑,因为printf
将您的数据打印为符号扩展的int
(这意味着您的系统char
上的char
被视为符号-请注意,这是实现定义的)。
将printf
更改为:
printf("value of buffer is %#X\n\n", (unsigned char)receivebuffer[i]);
或者将
receivebuffer
类型设为无符号:unsigned char receivebuffer[1];
// ...
printf("value of buffer is %#X\n\n", receivebuffer[i]);
关于c - 如何从十六进制值提取低位字节?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29139767/