博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
As3 Socket高低位
阅读量:4507 次
发布时间:2019-06-08

本文共 992 字,大约阅读时间需要 3 分钟。

  1. 什么是Big Endian和Little Endian? 在设计计算机系统的时候,有两种处理内存中数据的方法。一种叫为little-endian,存放在内存中最低位的数值是来自数据的最右边部分(也就是数 据的最低位部分)。
  2. 如何理解Big Endian和Little Endian 举个例子: int a = 1; a这个数本身的16进制表示是0×00 00 00 01 在内存中怎么存储呢? 如果你的CPU是intel x86架构的(基本上就是通常我们说的奔腾cpu),那么就是0×01 0×00 0×00 0×00 , 这也就是所谓的little-endian, 低字节存放在内存的低位. 如果你的CPU是老式AMD系列的(很老很老的那种,因为最新的AMD系列已经是x86架构了), 它的字节序就是big-endian, 其内存存储就是 0×00 0×00 0×00 0×01在内存中从高字节开始存放。 现在世界上绝大多数的CPU都是little-endian。
  3. 了解big-endian和little-endian有什么作用? 一个重要的作用就是了解在网络上不同的机器间的数据如何传输。 假设我们在网络上有两台机器A和B, 其中A为little-endian,B为big-endian 机器A要传输上面的整数a给机器B,如何传输呢? 过程是这样的: 机器A先把a在内存中的四个字节0x 01 0×00 0×00 0×00转化为网络字节序0×00 0×00 0×00 0×01,然后一个字节一个字节(从0×00到0×01)喂到网络上去 然后机器B从网络上一个字节一个字节地取出四个字节0×00 0×00 0×00 0×01后又会转化为本地字节序 0×00 0×00 0×00 0×01后放入内存。因而B正确地得到了来自A的数据a 如果数据缺少在网络上的字节序转换的话,情况会怎样呢? 机器A先把a由在内存的四个字节0x 01 0×00 0×00 0×00 一个字节一个字节地喂到网络上,然后机器B从网络上一个字节一个字节地收到0x 01 0×00 0×00 0×00并放入到内存中, B认为他收到了0×01000000, 也就是十进制数1677216,这显然是错误的.

转载于:https://www.cnblogs.com/jacku/articles/3907846.html

你可能感兴趣的文章
C 語言中的 sprintf() 函數
查看>>
VMware Worstation下载安装
查看>>
Qt操作Sqlite数据库
查看>>
java生产者与消费者模式
查看>>
SPOJ #442 Searching the Graph
查看>>
窗体美化,IrisSkin2.dll的使用!
查看>>
C语言声明数组变量时,在什么情况下,可不指定数组大小
查看>>
对模拟博客园登陆的改进---软件的开发规范
查看>>
简易csv解析
查看>>
JS案例之4——Ajax多图上传
查看>>
登陆系统的设计2 - 登陆页面的三种形式
查看>>
位运算---水题
查看>>
原码 反码 补码 移码
查看>>
mysql事务之savepoint
查看>>
日常零碎总结
查看>>
循序渐进开发WinForm项目(6)--开发使用混合式Winform模块
查看>>
在WinForm应用程序中快速实现多语言的处理
查看>>
阿里腾讯开撕,钉钉的广告打到腾讯的地盘了
查看>>
Vim快捷键分类
查看>>
What is the .NET Framework?
查看>>