以相反顺序存储整数值

storing integer value in reverse order

本文关键字:整数 顺序存储      更新时间:2023-10-16

在打印 hexadecimal value 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

这与endianness有关,这是计算机将数值存储在内存中的方式。

总而言之,大多数现代处理器(X86,X86-64,ARM)都是小端(ARM是Bi-Endian,您可以在硬件中进行配置)。

这意味着最低的字节具有最低的地址(第一个小端)。

而不是试图反对这一点,我建议您如果真的需要解决它。

如果您确实必须做的话,您可以做的一件事是使用网络字节订单,该订单定义为大型。诸如htons(), htonl(), ntohs(), ntohl()之类的功能可能会有所帮助。