博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于byte[]字节传输的大端和小端小议
阅读量:5736 次
发布时间:2019-06-18

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

当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-endian)和小端(little- endian)两个描述。

字节排序按分为大端和小端,概念如下

大端(big endian):低地址存放高有效字节

小端(little endian):低字节存放地有效字节

现在主流的CPU,intel系列的是采用的little endian的格式存放数据,而motorola系列的CPU采用的是big endian,ARM则同时支持 big和little,网络编程中,TCP/IP统一采用大端方式传送数据,所以有时我们也会把大端方式称之为网络字节序。

特别需要注意的是,C/C++语言编写的程序里数据存储顺序是跟编译平台所在的CPU相关的,而 JAVA编写的程序则唯一采用big endian方式来存储数据。这里我就只讨论C/C++语言的情况。

1.大端和小端的方式及判断

举个例子说明,我的机子是32位windows的系统,处理器是AMD的。对于一个int型数0x12345678,为方便说明,这里采用16进制表示。这个数在不同字节顺序存储的CPU中储存顺序如下:

0x12345678   16进制,两个数就是一字节

高有效字节——>低有效字节: 12 34 56 78

          低地址位     高低址位

大端:  12  34        56   78

小端: 78  56        34   12

 

#include
int main(void ){ unsigned int x =0x12345678; unsigned char *p = (unsigned char *)&x; printf("%0x %0x %0x %0x",p[0],p[1],p[2],p[3]); return 0;}

 

   --------------鸣谢(NULL)作者,本篇文章只供自己学习,若原始作者能够有建议,请邮件通知本人删除!

转载地址:http://ierwx.baihongyu.com/

你可能感兴趣的文章
Gigamon针对AWS引入全面可视化平台
查看>>
DTCC2015议程曝光 最新嘉宾议题揭秘
查看>>
BAT、IBM、亚马逊、微软等一线互联网的区块链版图布局
查看>>
智能合约:开启一个新经济时代
查看>>
[翻译] JavaScript函数的6个基本术语
查看>>
vue静态资源打包中的坑与解决方案
查看>>
Lc 895. Maximum Frequency Stack 最大频率栈 JS
查看>>
j2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 技术介绍
查看>>
Write Your Own Gemspec
查看>>
PlaNet,使用图像输入来学习世界模型
查看>>
Oracle 字符集的查看和修改【下】
查看>>
nginx + keepalive
查看>>
我的友情链接
查看>>
PHP json_encode() 函数介绍
查看>>
MyEclipse8.6 web中jsp页面出现jquery,dojo等代码自动提示
查看>>
js动态设置元素高度
查看>>
Ossim下的安全合规管理
查看>>
如何让一个linux命令后台运行,而不受终端影响
查看>>
DelphiWebMVC框架下BPL热部署实现
查看>>
spring-boot | 日志
查看>>