我在修复我获得的值的字节顺序时遇到问题。
我的想法是将一个WORD
分成两个,将它们转换为十六进制,并将它们存储在一个数组中。
WORD
是“crc_data”,它返回到我之前的问题(已得到解答)。
例如:
我从以下代码中获得了“结果”数据:
crc_data = 0A95
*注意:crc_data 是数据类型 WORD
我的想法是将它们分成两部分,并将它们设置为十六进制。像这样:
value_1 = 0x95
value_2 = 0x0A
有办法做到这一点吗?我读过一些有关“BITWISE”操作的内容,但我不确定这是否是这样做的方法。
最佳答案
您可以转换到 char*
。你会这样做:
crc_data = 0x0A95
const unsigned char *k = (const unsigned char*) &crc_data;
value_1 = k[0];
value_2 = k[1];
char 指针只是让您将数据视为字节字符串。然后您可以使用 []
阅读它们符号。
另一种方法是使用数学来获取上部和下部。移位运算符<<
会将你的数据降低 8 位。与除以 256 相同。
crc_data = 0x0A95;
value_1 = crc_data & 0xFF;
value_2 = (crc_data >> 8) & 0xFF;
另一种选择是使用 union 。基本上有很多方法可以做到这一点。
关于c - 分离数据并存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39629189/