分离数据并存储在数组中

Separate data and store in array

我在修复我得到的值的字节序时遇到问题。

我的想法是将WORD分成两个,将它们转换为十六进制,然后将它们存储在一个数组中。

WORD 是 "crc_data" 即 return 我之前的问题(已回答)。

例如:

我从以下代码中得到了 "result" 数据:

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;

另一种选择是使用联合。基本上有很多方法可以做到这一点。