大端(Big-Endian)和小端(little-Endian)的起源

关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。

战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,

因此他的父亲,就下令,命令所有的子民吃鸡蛋的时候,必须先打破鸡蛋较小的一端,违令者重罚。然后老百姓对此法令极为反感,期间发生了多次叛乱,

其中一个皇帝因此送命,另一个丢了王位,产生叛乱的原因就是另一个国家Blefuscu的国王大臣煽动起来的,叛乱平息后,就逃到这个帝国避难。据估计,

先后几次有11000余人情愿死也不肯去打破鸡蛋较小的端吃鸡蛋。这个其实讽刺当时英国和法国之间持续的冲突。Danny Cohen一位网络协议的开创者,

第一次使用这两个术语指代字节顺序,后来就被大家广泛接受。

大端小端之分

小端字节序和大端字节序表示存储的字节顺序有区别

小端字节序:低字节存于内存低地址;高字节存于内存高地址;

long型数据0x12345678

在小端系统中,

地址数据

0x00000100

0x78

0x00000101

0x56

0x00000102

0x34

0x00000103

0x12

内存的地址是由低到高的顺序;而数据的字节也是由低到高的

大端字节序:高字节存于内存低地址;低字节存于内存高地址;

long型数据0x12345678

在大端系统中,

地址数据

0x00000100

0x12

0x00000101

0x34

0x00000102

0x56

0x00000103

0x78

内存的地址是由低到高的顺序;而数据的字节却是由高到低的

网络字节序

网络上传输的数据都是字节流,对于一个多字节数值,在进行网络传输的时候,先传递哪个字节?也就是说,当接收端收到第一个字节的时候,它将这个字节作为高位字节还是低位字节处理,是一个比较有意义的问题;

UDP/TCP/IP协议规定:把接收到的第一个字节当作高位字节看待,这就要求发送端发送的第一个字节是高位字节;而在发送端发送数据时,发送的第一个字节是该数值在内存中的起始地址处对应的那个字节,也就是说,该数值在内存中的起始地址处对应的那个字节就是要发送的第一个高位字节(即:高位字节存放在低地址处);由此可见,多字节数值在发送之前,在内存中因该是以大端法存放的;

所以说,网络字节序是大端字节序;比如,我们经过网络发送整型数值0x12345678时,在80X86平台中,它是以小端发存放的,在发送之前需要使用系统提供的字节序转换函数htonl()将其转换成大端法存放的数值;

常见CPU的字节序

Big Endian : PowerPC、IBM、Sun

Little Endian : x86、DEC

ARM既可以工作在大端模式,也可以工作在小端模式。

网络传输大端序_大端 小端和网络字节序说明相关推荐

  1. 网络传输大端序_大端、小端与网络字节序

    大端(Big-Endian),小端(Little-Endian)以及网络字节序的概念在编程中经常会遇到.网络字节序(Network Byte Order)一般是指大端(Big-Endian,对大部分网 ...

  2. 大端模式小端模式、主机序网络序、入栈地址高低问题

    一.大端模式&小端模式 所谓的"大端模式",是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把 ...

  3. 大端模式、小端模式、网络字节顺序与主机字节顺序

    大端模式.小端模式.网络字节顺序与主机字节顺序 大端模式与小端模式 概念与详解 在各种体系的计算机中通常采用的字节存储机制主要有两种:big-endian和little-endian,即大端模式和小端 ...

  4. 大端(Big Endian)与小端(Little Endian)详解

    大端(Big Endian)与小端(Little Endian)简介 /// 1. 你从哪里来? 端模式(Endian)的这个词出自JonathanSwift书写的<格列佛游记>.这本书根 ...

  5. 大端(Big Endian)和小端(Little Endian)的区别

    大端(Big Endian)和小端(Little Endian)的区别         一.背景 在C/C++中,我们经常会处理位运算.不同的系统字节的排列就不一样,有的系统是大端排列,有的系统是小端 ...

  6. 2007-11-22 21:24 大端(Big Endian)与小端(Little Endian)详解

    [大端(Big Endian)与小端(Little Endian)简介] Byte Endian是指字节在内存中的组织,所以也称它为Byte Ordering,或Byte Order. 对于数据中跨越 ...

  7. java 大小端字节序_理解大小端字节序

    学过编程的人都应该知道大小端字节序的概念,但是很多时候,总是把他们弄混,这是整理出来的一份很简单的方式理解字节序的文章,废话不多说,这里直接入正题. 什么是字节序? 字节序,简单来说,就是指的超过一个 ...

  8. Linux 网络基础 C语言常用API 快速翻阅笔记 (字节序篇)

    Linux 网络基础(字节序篇) 一.字节序大小端 1.大小端简介 2.C语言判断大小端 二.大小端 C语言函数 1.将十进制数字转成网络字节序 2.将网络字节序转成十进制数字 三.IP字符串与网络字 ...

  9. 大小字节序的深入理解和鉴定系统字节序方法

    2019独角兽企业重金招聘Python工程师标准>>> 最近在项目中的soket通信时,遇到了大小字节序问题和网络传输时的字节序问题,现在给大家整理一下,希望大家对字节序有个比较深入 ...

  10. 【网络编程】大端模式和小端模式(大头序和小头序)

    转自:http://my.oschina.net/renhc/blog/37130 大端:多字节值的大端存储在该值的起始位置:(老大站排头为大) 小端:多字节值的小端存储在该值的起始位置:(老小站排头 ...

最新文章

  1. mac搭建python开发环境_Mac中基于Homebrew搭建python开发环境
  2. STE:入侵植物可选择性富集土壤微生物
  3. 互联网1分钟 |1029
  4. 《微信公众平台开发最佳实践》——2.4 本章小结
  5. [导入]ASP.NET MVC框架开发系列课程(2):一个简单的ASP.NET MVC应用程序.zip(13.70 MB)...
  6. 发布 128 核 Altra Max,自研内核,明年推出 5nm 处理器,“性能怪兽”Ampere 搞大事?
  7. 项目管理系统Redmine安装
  8. 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用...
  9. SharePoint2010添加webpart找不到内容编辑器
  10. 程序人生:半路转行再来学软件测试,能够成为大牛吗?
  11. python脚本根据cookies自动登录网站_为爬虫获取登录cookies:使用万能钥匙 Selenium 搞定一切登录...
  12. 专注于开源数据科学软件的非营利基金会—— NumFOCUS 的来龙去脉(下)
  13. 开源交通仿真平台SimMobility的安装教程
  14. ​一文看尽MAE最新进展!恺明的MAE已经提出大半年,目前发展如何?
  15. 【C++】数字的组合排列情况
  16. 农商银行招聘计算机人员考什么,农商银行招聘考试考什么内容
  17. 算法竞赛——进阶指南——acwing355. 异象石 dfn的性质+lca (简单的小证明)
  18. catia制作物料明细_CATIA导出装配文件的部件列表BOM清单到Excel文件 | 坐倚北风
  19. java 静态抽象类_java--抽象类实例(包含静态内部抽象类)
  20. vim 基本够用的操作命令

热门文章

  1. 网络分层流转---从浏览器请求到服务端响应究竟经历了什么?
  2. 使用经典的基本播放命令和 MML 创建 MIDI 文件
  3. 香橙派装ubuntu系统
  4. Python 豆瓣TOP250 电影爬取
  5. 百度网盘linux版本怎么安装
  6. css实现跑马灯效果
  7. php设置Apache虚拟主机vhost
  8. 计算机速算训练,世界上最快的速算法,背熟就是速算神童,大脑堪比计算机!仅发一次...
  9. Jquery点击事件触发多次解决办法
  10. MMO游戏开发 --前言