c - 如何从十六进制值中提取低位字节?

标签 c hex byte extract

我正在编写一个与串行设备通信的程序。设备以十六进制格式向我提供数据。我得到的十六进制格式是 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;
}

我正在接收缓冲区中获取数据。请帮忙谢谢。

最佳答案

您想提取最后 2 个字节吗?你需要运算符 '&' 提取它:

FFFFFF84 -> 1111 1111 1111 1111 1111 1111 1000 0100
000000FF -> 0000 0000 0000 0000 0000 0000 1111 1111
---------------------------------------------------
after &  -> 0000 0000 0000 0000 0000 0000 1000 0100

所以答案是做作业:

last2 = input & 0xFF

希望这个答案能帮助你理解位运算。

关于c - 如何从十六进制值中提取低位字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29139767/

相关文章:

php - php和c之间共享配置文件

c - 在 GCC 中以编程方式调用调试器

ios - Objective C 中的简单 MIDI 文件编写器

python - 如何从文件中查找特定索引处的字节?

c++ - 如何将 32 位 int 散列为 10 位 int?

c - stat 获取文件的大小并复制它

c++ - 计算 .txt 文件中十六进制字符的频率

python - 在 Python 中将 float 转换为两位数的十六进制数

c# - 将任何文件保存到数据库中,只需将其转换为字节数组?

C:如何递归地逐位传输字节?