以相反的顺序存储整数值

时间:2014-02-06 01:39:25

标签: c++ c pointers memory memcpy

打印十六进制值(存储在 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

1 个答案:

答案 0 :(得分:2)

这与ENDIANNESS有关,就是计算机如何将数值存储在内存中。

总而言之,大多数现代处理器(x86,x86-64,ARM)都是小端(ARM现在是双端的,您可以在硬件中配置它)。

这意味着最低有效字节具有最低地址(小端优先)。

如果你真的需要,我会建议你解决这个问题。

如果真的必须要做的话,你可以做的一件事就是使用网络字节顺序,即定义为big-endian。像htons(), htonl(), ntohs(), ntohl()这样的功能可能会有所帮助。