美文网首页
[CS] 字节序

[CS] 字节序

作者: scvthedefect | 来源:发表于2016-12-01 20:57 被阅读0次

1. 什么是字节序(Byte Order)

计算机读取数据时,对字节的排序方式。分为两种(以A=0x1122为例):

  1. 大端(Big-Endian):高位在前,低位在后,则A的读取方式是11 22,与人类的认知方式一致;
  2. 小端(Little-Endian):低位在后,高位在前,则A的读取方式是22 11,与人类的认知方式相反。

计算机的数据传输单位是字节(byte),因此计算机在读取大于1byte的数据时,要根据字节间的先后条件获得正确的数字,如0x11FF,如果按Big-Endian来读取,则是11, FF,即0001 0001, 1111 1111;如果按Little-Endian来读取,则为1111 1111, 0001 0001

(注意在高位补零)

2. 大小端的转化

具体步骤:

  1. 移位(左移)
  2. 与运算

2.1 大端转小端

设大端数字A=1122(以大端格式显示),由于计算机读取都是从低位开始,因此第一个byte为[22],此时为了转成小端表示,应该要将[22]左移到[11]之前,因此是x = buf[x] << 8 | buf[x+1]

2.2 小端转大端

设小端数字A=AABB,从低位读取,第一个byte为[AA],要将[BB]左移到[AA]之前,因此x = buf[x+1] << 8 | buf[x]

3. 参考资料

  1. 阮一峰的博客

相关文章

  • [CS] 字节序

    1. 什么是字节序(Byte Order) 计算机读取数据时,对字节的排序方式。分为两种(以A=0x1122为例)...

  • 面向对象(二刷)

    1. 继承 1.1 继承中的关键字 Program.cs 父类Animal.cs Dog.cs Cat.cs 注意...

  • Linux的socket API基本操作

    1.socket地址API 主机字节序和网络字节序 字节序分为大端字节序和小端字节序 大端字节序 = 一个整数的高...

  • C语言字节序转换API

    主机字节序转网络字节序 网络字节序转主机字节序 将字符串IP地址转换为网络字节序的整型数据 将网络字节序数据转换为...

  • 内存序、字面量、动态规划

    内存字节序 确认内存字节序 /* 确定你的电脑是大端字节序还是小端字节序 */include int check...

  • socket编程基础

    字节序 字节序分为大端字节序和小端字节序大端字节序: 是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内...

  • 深入理解Emoji(二) —— 字节序和BOM

    上篇主要了解了字符集和字符集编码的相关知识,其中有提到字节序的问题,这篇我们便深入探讨下这方面的知识。 字节序 字...

  • Linux高性能服务器入门

    第五章 Linux网络编程基础API 主机字节序和网络字节序 <5.1.1>Q:设定主机字节序和网络字节序是为了解...

  • 一文搞懂序列化与反序列化

    一、是什么 序列化:就是将对象转化成字节序列的过程。 反序列化:就是讲字节序列转化成对象的过程。 对象序列化成的字...

  • Linux高性能服务器开发

    公众号:畅游码海 更多高质量原创文章都在里面~ 主机字节序和网络字节序: 在32位机器上,累加器一次能装载4个字...

网友评论

      本文标题:[CS] 字节序

      本文链接:https://www.haomeiwen.com/subject/ducfmttx.html