字节序:Big Endian 和 Little Endian

article/2025/9/8 10:31:59

最近碰到了node.js中的buf.readUInt16LE(offset[, noAssert])方法:
        根据指定的偏移量,使用特殊的 endian 字节序格式读取一个无符号 16 位整数。若参数 noAssert 为 true 将不会验证 offset 偏移量参数。 这意味着 offset 可能会超出 buffer 的末尾。默认是 false。

           搜了下字节序这个概念:

转自:https://blog.csdn.net/lisonglisonglisong/article/details/45421091

 

一、字节序


字节序,也就是字节的顺序,指的是多字节的数据在内存中的存放顺序。

在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如:如果C/C++中的一个int型变量 a 的起始地址是&a = 0x100,那么 a 的四个字节将被存储在存储器的0x100, 0x101, 0x102, 0x103位置。

根据整数 a 在连续的 4 byte 内存中的存储顺序,字节序被分为大端序(Big Endian) 与 小端序(Little Endian)两类。 然后就牵涉出两大CPU派系:

Motorola 6800,PowerPC 970,SPARC(除V9外)等处理器采用 Big Endian方式存储数据;

x86系列,VAX,PDP-11等处理器采用Little Endian方式存储数据。

另外,还有一些处理器像ARM, DEC Alpha的字节序是可配置的。

 

二、大端与小端


那么,到底什么是大端,什么是小端? 如下图:

               
 
我相信上面的图已经够直观了。也就是说:

Big Endian 是指地址端 存放 高位字节
Little Endian 是指地址端 存放 低位字节
各自的优势:

Big Endian:符号位的判定固定为第一个字节,容易判断正负
Little Endian:长度为1,2,4字节的数,排列方式都是一样的,数据类型转换非常方便


三、为什么要注意字节序


如果你写的程序只在单机环境下面运行,并且不和别人的程序打交道,那么你完全可以忽略字节序的存在。

但是,如果你的程序要跟别人的程序产生交互呢? 比如,当一个 C/C++ 的程序要与一个 Java 程序交互时:

C/C++语言编写的程序里数据存储顺序是跟编译平台所在的CPU相关的,而现在比较普遍的 x86 处理器是 Little Endian

JAVA编写的程序则唯一采用 Big Endian 方式来存储数据

试想,如果你的C/C++程序将变量 a = 0x12345678 的首地址传递给了Java程序,由于Java采取 Big Endian 方式存储数据,很自然的它会将你的数据翻译为 0x78563412。显然,问题就出现了!!!

另外,网络传输一般采用 Big Endian,也被称之为网络字节序,或网络序。当两台采用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。

四、判断机器的字节序
由于 C/C++ 存储数据时的字节序依赖所在平台的CPU,所以我们可以通过C/C++程序判定机器的端序:

void Endianness()
{int a = 0x12345678;if( *((char*)&a) == 0x12)cout << "Big Endian" << endl;elsecout << "Little Endian" << endl;
}


五、网络序和主机序


网络字节序:TCP/IP各层协议将字节序定义为 Big Endian,因此TCP/IP协议中使用的字节序是大端序。

主机字节序:整数在内存中存储的顺序,现在 Little Endian 比较普遍。(不同的 CPU 有不同的字节序)

在进行网络通信时 通常需要调用相应的函数进行主机序和网络序的转换。Berkeley socket API 定义了一组转换函数,用于16和32bit整数在网络序和本机字节序之间的转换。htonl,htons用于本机序转换到网络序;ntohl,ntohs用于网络序转换到本机序。
--------------------- 
 


http://chatgpt.dhexx.cn/article/Qt2tdTL8.shtml

相关文章

字节序——Big Endian和Little Endian

Big Endian和Little Endian 一、Endian 的起源二、字节序之 Little-Endian&Big-Endian三、为什么要注意字节序四、网络序和主机序五、Go 中的字节序 一、Endian 的起源 在各种计算机体系结构中&#xff0c;对于字节、字等的存储机制有所不同&#xff0c;因而引发了计算机通…

小端格式和大端格式(Little-EndianBig-Endian)

小端格式和大端格式(Little-Endian&Big-Endian) 1 字节序 字节序&#xff0c;也就是字节的顺序&#xff0c;指的是多字节的数据在内存中的存放顺序。 在几乎所有的机器上&#xff0c;多字节对象都被存储为连续的字节序列。 例如&#xff1a;如果C/C中的一个int型变量 a…

BIG-ENDIAN VS LITTLE-ENDIAN

1. 计算机硬件有两种储存数据的方式&#xff1a;大端字节序&#xff08;big endian&#xff09;和小端字节序&#xff08;little endian&#xff09;。 举例来说&#xff0c;数值0x2211使用两个字节储存&#xff1a;高位字节是0x22&#xff0c;低位字节是0x11。 字节序&…

什么是字节序? Big-Endian vs Little-Endian 举例说明

计算机只理解二进制。这意味着 0 和 1 构成了计算机使用的语言。 一位是 0 或 1 。8 位组成一个字节。从这些简单的部分&#xff0c;我们可以构建极其复杂的连接计算机系统来渲染视频、显示来自世界各地的文本并计算极其复杂的算法。 一些数据&#xff08;一些英文字符&#…

java -- Big Endian and Little Endian 大端和小端概念讲解及如何转换

什么是大端、小端&#xff1f; 字节是计算机中数据处理的基本单位。 计算机中以字节为单位存储和解释信息&#xff0c;规定一个字节由八个二进制位构成&#xff0c;即1个字节等于8个比特&#xff08;1Byte8bit&#xff09;。 计算机进行数据处理时&#xff0c;一次存取、加工和…

浅谈大小端(Endian)与位域

目录 字节序 位序 常见位序的错误理解 以太网的大小端 以太网的字节序 以太网的位序 位域中的大小端 位域遇上大小端以太网通信 大端CPU发送 小端CPU发送 位域大小端问题的解决措施 大小端问题浪费了太多应用、驱动、逻辑工程师太多的时间&#xff0c;无时无刻都有人…

Endian

字节序&#xff08;Endian&#xff09;即字节顺序&#xff08;Byte-Order&#xff09;&#xff0c;又称为端序或尾序&#xff08;Endianness&#xff09;。描述的是计算机如何组织字节组成对应的数字&#xff0c;是多字节数据存储和传输时字节的顺序&#xff0c; 是多字节数据在…

一个神奇的网站 Papers with code

这个网站会把某个方向的 论文和代码总结出来。 有助于提高个人效率。 https://paperswithcode.com/sota

这是一个神奇的网站

2012年1月9日&#xff0c;下午2点&#xff0c;打开www.12306.cn.硬是提交了100多次才进入这个神奇的网站。结果又提交了100多次订单才成功了&#xff0c;很不幸运的是尼玛硬座的&#xff0c;等等是无号的...

【工具】sci-hub:一个神奇的免费下载文献的网站

title: “【工具】sci-hub&#xff1a;一个神奇的免费下载文献的网站” date: 2019-09-20T10:44:5508:00 lastmod: 2019-09-20T10:44:5508:00 tags: [“工具”,“sci-hub”] categories: [“工具”] sci-hub&#xff1a;一个神奇的免费下载文献的网站&#xff08;使用技巧&…

最近发现的几个神奇CS学习网站

最近发现的几个CS学习网站&#xff0c;真的灰常良心&#xff0c;希望自己以后少吃瓜&#xff0c;多看看别人的路线和学习笔记。 一、北大信科大佬的CS笔记 https://csdiy.wiki/#_8 自己也是打算学习各种国外的优质课程&#xff08;最近在学CS224n课程和做对应的project&…

冷门但超级有用的神奇网站推荐

给大家介绍一些神奇的具有强大功能的网站&#xff0c;有些功能特别的有用 查询名下手机号 https://getsimnum.caict.ac.cn 查询内容将以短信的形式下发到手机&#xff0c;一个人一天只能查询一次&#xff0c;因为是工信部出品的&#xff0c;所以安全性十分有保障 查询手机号…

快速下载一个网站

有时候我们需要分析一个网站&#xff0c;或者基于一个网站进行魔改&#xff0c;这个就需要一些特殊的手段将网站源码下载到本地了&#xff0c;其实目前大部分网站都是有代码压缩的&#xff0c;很难去有修改。 这里我就教大家如何快速获取一个网站的所有资源&#xff0c;包括源码…

给理工男女的一个神奇网站!

2018 AI开发者大会是一场由中美人工智能技术高手联袂打造的AI技术与产业的年度盛会&#xff01;这里有15硅谷实力讲师团、80AI领军企业技术核心人物、100技术&大众实力媒体、1500AI专业开发者——我们只讲技术&#xff0c;拒绝空谈&#xff01; 参加 2018 AI开发者大会&…

推荐一个命名变量的神奇网站 CODELF

推荐一个命名变量的神奇网站 CODELF 在我们写程序的时候&#xff0c;总是需要去给各种变量命名。于是各种命名大法都上来了&#xff0c;有拼音的&#xff0c;有首字母缩写的&#xff0c;各种各样。而我们推荐的命名肯定是英文的驼峰命名。今天给大家推荐一个网站&#xff1a;h…

mc神奇宝贝服务器网站,我的世界1.12.2 master 神奇宝贝服务器

———— 服务器名称&#xff1a;master—神奇宝贝 ———— 服务器版本&#xff1a;1.12.2 ———— 服务器类型&#xff1a;神奇宝贝 ———— 服务器的IP&#xff1a;进群下载客户端 ———— 服务器QQ群&#xff1a;609019804 ———— 服务器特色 游戏模式&#xff1a;休闲…

Craigslist :一个神奇的网站

转载&#xff1a;https://blog.naaln.com/2017/05/a-magic-website-raigslist/ 今天在看书的时候看到一个问题&#xff0c;什么是一个好产品&#xff1f;是好用的&#xff0c;还是好看的&#xff1f; 显而易见&#xff0c;应该是一个好用的产品。有什么产品是特别好看&#xff…

codewars 一个很神奇的网站

今天闲着无聊&#xff0c;逛推酷&#xff0c;无意间发现了一篇很有意思的帖子&#xff0c;帖子里写了国外的一个很有意思的网站&#xff0c;叫codewars &#xff0c;这个网站的宗旨是把写代码 当成像打怪升级一样。上面有很多的题目&#xff0c;你可以用你熟悉的语言答题&…

p站,一个神奇的网站

说起p站&#xff0c;不少人老司机肯定想到的是那一个p站&#xff0c;但今天我要说的是另一个----pixiv&#xff0c;一个插画网站。 不知道什么原因&#xff0c;网站在国内被墙了&#xff0c;想弄个随机图片还得翻墙&#xff0c;但由于服务器网速实在太慢了&#xff0c;只能网上…

记录一个神奇的网站

Aurorahttps://arr003.network/