打印十六进制值(存储在 a 中的值)以反向顺序打印,
int main()
{
int i;
uint8_t b[4];
int a = 0xaabbccdd;
uint8_t *ptr;
ptr = &b;
memcpy(ptr,&a,4 * sizeof(uint8_t));
for(i = 0;i < 4;i++)
{
printf("%x ",*ptr++);
}
return(0);
}
输出
dd cc bb aa
如何以我作为输入的相同顺序存储它( aabbccdd )
答案 0 :(得分:2)
这与ENDIANNESS有关,就是计算机如何将数值存储在内存中。
总而言之,大多数现代处理器(x86,x86-64,ARM)都是小端(ARM现在是双端的,您可以在硬件中配置它)。
这意味着最低有效字节具有最低地址(小端优先)。
如果你真的需要,我会建议你解决这个问题。
如果真的必须要做的话,你可以做的一件事就是使用网络字节顺序,即定义为big-endian。像htons(), htonl(), ntohs(), ntohl()
这样的功能可能会有所帮助。