对于整型、长整型等数据类型,都存在字节排列的高低位顺序问题。
Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节)
而 Little endian 则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放据的低位字节到高位字节)。
例如,假设从内存地址 0x0000 开始有以下数据:
地址 | 数据 |
---|---|
… | … |
0x0000 | 0x12 |
0x0001 | 0x34 |
0x0002 | 0xab |
0x0003 | 0xcd |
… | … |
假设我们去读取一个地址为 0x0000 的四个字节变量
若字节序为big-endian,则读出结果为0x1234abcd;
若字节序为little-endian,则读出结果为0xcdab3412。
如果我们将0x1234abcd 写入到以 0x0000 开始的内存中,则Little endian 和 Big endian 模式的存放结果如下:
地址 | 0x0000 | 0x0001 | 0x0002 | 0x0003 |
---|---|---|---|---|
Big_endian | 0x12 | 0x34 | 0xab | 0xcd |
little – endian | 0xcd | 0xab | 0x34 | 0x12 |
参考链接:SHA256算法原理详解-CSDN博客