本文共 592 字,大约阅读时间需要 1 分钟。
大小端问题,是指在内存中(注意是内存,不是硬盘)以 字节为单位的排列顺序,与cpu和操作系统有关,操作系统可以选择大小端,java默认读取按大端读取。
大端:高位存在低地址,低位存在高地址;小端:高位存在高地址,低位存在低地址;
举个例子,从内存地址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的字节序.
python 查看操作系统大小端,python -c "import sys; print(sys.byteorder)";如果输出little表示小端存储
java 中有两个byte ,byte b[]=[0xcd,0xab],按小端读取就变成[0xab,0xcd]
转载地址:https://liuhuiyao.blog.csdn.net/article/details/78904238 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!