分离数据并存储在数组中
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;
另一种选择是使用联合。基本上有很多方法可以做到这一点。
我在修复我得到的值的字节序时遇到问题。
我的想法是将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;
另一种选择是使用联合。基本上有很多方法可以做到这一点。