关于字节流(byte流)读取大小端的问题
发布日期:2021-06-30 20:11:14 浏览次数:2 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:win10 安装提示2503 2502权限问题
下一篇:css 识别屏幕大小自适应

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月13日 05时57分02秒