在实际软件调试时,会做数据类型的转换,比如强制类型转换,将int ---> short , unsigned --> signed ,以及不同的平台做开发时,
比如linux ,Window, ARM,不同平台的数据存储机制是不一样的。
关于大小端的基本概念如下:
大端:高位存在低地址,低位存在高地址;
小端:高位存在高地址,低位存在低地址;(intel的x86,ARM普遍都是属于小端)
举个例子,从内存地址0x0000开始有以下数据
0x0000 0x12
0x0001 0x34
0x0002 0xab
0x0003 0xcd
如果我们去读取一个地址为0x0000的四个字节变量:
若字节序为big-endian, 则读出结果为0x1234abcd;
若字节序位little-endian,则读出结果为0xcdab3412;
如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为:
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x23 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
Intelx86系列以及ARM系列CPU都是little-endian的字节序.