转自:http://www.cnblogs.com/JeffreyZhao/archive/2010/02/10/byte-order-and-related-library.html

说到程序间的通信,说到底便是发送数据流。我们一般把字节(byte)看作是数据的最小单位。当然,其实一个字节中还包含8个比特(bit)──有时候我奇怪为什么很多朋友会不知道bit或是它和byte的关系。当我们拿到一系列byte的时候,它本身其实是没有意义的,有意义的只是“识别字节的方式”。例如,同样4个字节的数据,我们可以把它看作是1个32位整数、2个Unicode、或者字符4个ASCII字符。

同样我们知道,在一个32位的CPU中“字长”为32个bit,也就是4个byte。在这样的CPU中,总是以4字节对齐的方式来读取或写入内存,那么同样这4个字节的数据是以什么顺序保存在内存中的呢?例如,现在我们要向内存地址为a的地方写入数据0x0A0B0C0D,那么这4个字节分别落在哪个地址的内存上呢?这就涉及到字节序的问题了。

每个数据都有所谓的“有效位(significant byte)”,它的意思是“表示这个数据所用的字节”。例如一个32位整数,它的有效位就是4个字节。而对于0x0A0B0C0D来说,它的有效位从高到低便是0A、0B、0C及0D——这里您可以把它作为一个256进制的数来看(相对于我们平时所用的10进制数)。

而所谓大字节序(big endian),便是指其“最高有效位(most significant byte)”落在低地址上的存储方式。例如像地址a写入0x0A0B0C0D之后,在内存中的数据便是:

而对于小字节序(little endian)来说就正好相反了,它把“最低有效位(least significant byte)”放在低地址上。例如:

对于我们常用的CPU架构,如Intel,AMD的CPU使用的都是小字节序,而例如Mac OS以前所使用的Power PC使用的便是大字节序(不过现在Mac OS也使用Intel的CPU了)。此外,除了大字节序和小字节序之外,还有一种很少见的中字节序(middle endian),它会以2143的方式来保存数据(相对于大字节序的1234及小字节序的4321)。

转载于:https://www.cnblogs.com/candyboy/archive/2010/05/04/1727100.html

(转)挺好的一篇介绍字节序的文章相关推荐

  1. 2023年副业收入!这是我看到的最好的一篇介绍网络兼职的文章

    赚钱之余,也不能忽视提升自己. 大学生做兼职,就要做边际成本越来越小,甚至边际成本为0的. 层级越高的兼职,起步难度越大,但是越能享受到时间的复利红利. 初期可能会比较难,后期就真的是躺赚了. 这是我 ...

  2. 国内首篇介绍JanOS物联网操作系统的文章 - 如何把你的手机主板打造成物联网

    天地会珠海分舵注:如无意外,您现在正在看的将是国内首篇且是唯一一篇介绍炙手可热的物联网的操作系统JanOS的文章!不信你去百度!希望大家能喜欢.但本文只是引言,更多信息请还是访问JanOS的官网:ht ...

  3. 【网络篇】第四篇——网络字节序

    网络字节序和本机转换 字节序转换函数 网络字节序和本机转换 计算机在存储数据时是有大小端的概念的: 大端模式: 数据的高字节内容保存在内存的低地址处,数据的低字节内容保存在内存的高地址处. 小端模式: ...

  4. 老猿学5G扫盲贴:推荐三篇介绍HTTP2协议相关的文章

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 5G中的服务化接口调用都是基于HTTP2协议的,老 ...

  5. Linux网络编程——字节序与网络字节序

    说明:   本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉.   QQ 群 号:513683159 [相 ...

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

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

  7. [转帖]虚拟内存探究 -- 第二篇:Python 字节

    虚拟内存探究 -- 第二篇:Python 字节 http://blog.coderhuo.tech/2017/10/15/Virtual_Memory_python_bytes/是真看不懂哦  翻译 ...

  8. zephir-开篇介绍

    zephir-开篇介绍 前言 先在这里感谢各位zephir开源技术提供者 笔者在学习phalcon的过程中了解到,phalcon2.x版本通过了zephir重写,第一感觉是zephir这么牛逼?笔者赶 ...

  9. 大小端字节序介绍以及判断当前环境字节序的程序【C语言】

    文章目录 1.大小端字节序介绍 2. 判断当前环境的字节序程序 1.大小端字节序介绍 首先我们先来介绍什么是大端字节序,什么是小端字节序: 大小端字节序指的是数据在电脑上存储的字节顺序 小端字节序存储 ...

最新文章

  1. linux入门之目录结构
  2. Amazon:大数据分析技能,你满足几条?
  3. pmp每日三题(2022年2月22日)
  4. Django之ORM(多对多)
  5. windows设备管理器
  6. 说实话,我主要是冲着奖金来的
  7. Redis中的value包含中文显示的问题?
  8. MySQL 8.0 异步复制的三种方式
  9. haproxy高可用
  10. Android上SQLite的性能优化问题
  11. 如何让Win10在开机时跳过锁屏
  12. 数字图像处理matlab蔡利梅,数字图像处理:使用MATLAB分析与实现:using MATLAB
  13. 通信总线模块:RS485、SP3232
  14. 用还原精灵做“硬盘还原卡”(转)
  15. 分布式系统中的CAP理论
  16. VMware虚拟机关闭U盘USB自动识别
  17. STM32用SWD口烧录程序导致锁死
  18. Calendar 根据指定日期 获取月的第几周
  19. myeclipse超详细安装教程+图文+安装包获取
  20. Mac磁盘工具教程 – 抹掉并重新格式化硬盘/移动硬盘

热门文章

  1. 【数据挖掘笔记十二】离群点检测
  2. 离线轻量级大数据平台Spark之读取CSV文件实例
  3. MapReduce基础开发之二数据去重和排序
  4. 开关电源怎么测试文波_示波器测试开关电源纹波的方法
  5. 详解js中typeof、instanceof与constructor
  6. MyBatis分页插件PageHelper使用练习
  7. PyQt5 技术篇-调用消息对话框(QMessageBox)进行简单提示!
  8. Git 技术篇 - 本地Git绑定GitHub实现代码云寄存实例演示
  9. C++——构造函数析构函数
  10. CTFshow 反序列化 web275