TODO:字节序的一些理解

作者: OneTODO | 来源:发表于2017-01-11 20:45 被阅读27次

TODO:字节序的一些理解

本文是小编对字节序的片面理解,希望对你有帮助哈。

字节序,即字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前。

1.Little endian:将低序字节存储在起始地址,俗称小端

2.Big endian:将高序字节存储在起始地址,俗称大端

比如一个0x01020304(左高右低)这个整数,在小端下在内存中的布局如下

[04][03][02][01] 注意左边是低地址,而右边是高地址

在大端下则是

[01][02][03][04] 注意左边是高地址,而右边是低地址。

比较大端,小端的排序,采用大端方式存储数据是比较符合人类的思维习惯。

因为网上有些人对大端,小端的认识不一样;等下小编会写一段golang的代码来论证小端,大端排序的正确性。

网络字节序,是指网络传输的字节序,可能是大端序或者小端序,取决于软件开始时通讯双方的协议规定。TCP/IP协议RFC1700规定使用“大端”字节序为网络字节序,开发的时候需要遵守这一规则。

在现有的平台上Intel的X86采用的是Little-Endian,而像Sun的SPARC采用的就是Big-Endian。在C语言中,默认是小端(在有些单片机的实现中是基于大端,比如Keil 51C),Java是平台无关的,默认是大端,golang也是默认使用大端。不同语言各自采用不同的字节序,相互之间的传递需要进行字节序的转换工作。

最后,附上Golang对大小端的测试代码

输出:

a: 305419896

BigEndian: 12 34 56 78

b: 305419896

c: 305419896

tt: 0x12345678

//tt输出0x123456,则表示Go使用大端。如果需要对小端测试只要把BigEndian改成LittleEndian即可,有兴趣可以试试。

相关文章

  • TODO:字节序的一些理解

    TODO:字节序的一些理解 本文是小编对字节序的片面理解,希望对你有帮助哈。 字节序,即字节在电脑中存放时的序列与...

  • 对字节序的理解

    对字节序的定义:查看维基百科字条大概的意思就是: 大端序中,高位字节放在低位地址 小端序中,低位字节放在低位地址 ...

  • 理解字节序

    1.计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian) ...

  • 大端字节序和小端字节序的理解

    参考编码字符集和字符编码介绍unicode和字节介绍

  • 简单理解字节序

    字节序,一种简称,表示为内存中存储的字节的顺序,但仅仅是某一结构的存储字节的顺序,不影响总体结构。 起源 ... ...

  • 理解字节序(转)

    计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。 举...

  • [java基础] serialVersionUID

    serialVersionUID的作用 个人理解:java序列化就是指把对象转化成字节序列,反序列化是指从字节序列...

  • 33.opengl高级光照-SSAO

    todo: 关于切线空间的理解,还需要再多查一些资料,深入理解 这一章节看了好几天,涉及的细节较多,需要慢慢消化 ...

  • Linux的socket API基本操作

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

  • Pyhton中一些具有特别用处的注释

    TODO注释 单行注释“#”号后使用TODO关键字 效果:1)蓝色高亮显示注释;2)并能通过Pycharm控制台中...

网友评论

    本文标题:TODO:字节序的一些理解

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