我有一个问题,题目说一个unsigned char
数组存储unsigned int
,每个int
仅使用3个字节。
为什么我的老师要像这样初始化向量:unsigned char s[]="\x12\x34\x78\x9A\xBC\xDE\xFF"
而不只是简单地用整数?我相信这些数字是用十六进制表示的。
我有一个问题,题目说一个unsigned char
数组存储unsigned int
,每个int
仅使用3个字节。
为什么我的老师要像这样初始化向量:unsigned char s[]="\x12\x34\x78\x9A\xBC\xDE\xFF"
而不只是简单地用整数?我相信这些数字是用十六进制表示的。
unsigned char s[] = "\x12\34\x78" "\x9a\xbc\xde";
这使得每个数字的边界更易于识别,但是重复引号占用了空间。
你可以这样提取单个整数:
unsigned int unpack24(size_t index)
{
if(index >= (sizeof s) / 3)
return 0;
const unsigned int hi = s[3 * index];
const unsigned int mid = s[3 * index + 1];
const unsigned int low = s[3 * index + 2];
return low | (mid << 8) | (hi << 16);
}
0x123478
;我当然不知道这是否正确。