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

article/2025/9/8 15:21:38

什么是大端、小端?

字节是计算机中数据处理的基本单位。
计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit)。
计算机进行数据处理时,一次存取、加工和传送的数据长度称为字(word)。一个字通常由一个或多个(一般是字节的整数位)字节构成。
但并非所有计算机都以相同的顺序存储由多字节值组成的字节。考虑一个由2个字节组成的16位因特网。存储该值有两种方式

  • Little Endian 小端: 低阶字节存储在起始地址(A),高阶字节存储在下一个地址(A + 1)
  • Big Endian 大端:高阶字节存储在起始地址(A),低阶字节存储在下一个地址(A + 1)

网络字节顺序: 为了允许具有不同字节顺序约定的计算机相互通信,Internet协议为在网络上传输的数据指定了规范的字节顺序约定。
network order 即网络序,默认网络传输字节为大端

小端和大端是存储多字节数据类型(int、float等)的两种方式

  • 计算机内存由正整数地址引用。在计算机内存中,把最低有效字节放在最高有效字节之前存储数字是“自然的”。
    “自然”顺序,即在内存中较低有效字节出现在较高有效字节之前。自然顺序是采用小端方式存储
    • 基于英特尔的处理器是小端。ARM处理器是小端处理器。
  • 但许多供应商,如IBM、CRAY和Sun,更喜欢采用相反的顺序存储数据,即采用大端方式存储。
  • 双端处理器可以在小端和大端两种模式下运行。当前的一代ARM处理器是双端处理器。

根据这些定义,一种32位数据模式,它被视为32位无符号整数。“高阶”字节是2的最大次方:231,…, 224。“低阶”字节是2的最小次方: 27,…, 20
示例如下:

  • MSB:全称为Most Significant Bit,在二进制数中属于最高有效位,MSB是最高加权位,与十进制数字中最左边的一位类似。
  • LSB:全称为Least Significant Bit,在二进制数中意为最低有效位,

一般来说,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。
在这里插入图片描述
在这里插入图片描述

字节顺序是否影响文件格式?

  • 以1字节为基本单位的文件格式独立于字节顺序,例如ASCII文件。
  • 其他文件格式使用一些固定的端顺序格式,例如JPEG文件以大端顺序格式存储。
  • java 全部为大端(与平台无关): Java二进制文件中的所有内容都以大端顺序存储。这意味着如果您只使用Java,那么所有文件在所有平台(Mac、PC、UNIX等)上的处理方式都是相同的。
  • C语言默认是小端模式:用C语言编写的程序通常使用 小端顺序

如何知道机器的字节次序

How to Know the Endian-ness?
在Java中,我们可以使用ByteOrder.nativeOrder()方法来获取CPU使用的字节顺序。在使用Intel CPU 或 AMD CPU时,输出结果都是小端顺序

ByteOrder byteOrder = ByteOrder.nativeOrder();System.out.println(byteOrder);   //LITTLE_ENDIAN

如何进行大小端的转换

在java中,可以基于ByteBuffer提供的order方法,进行大小端的转换
如处理网络字节流时,先针对获取的byte[] 进行 buffer.order(ByteOrder.BIG_ENDIAN);

import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;public class SimpleDemo {public static void main(String[] args) throws UnsupportedEncodingException {ByteBuffer byteBuffer = ByteBuffer.allocateDirect(10);byteBuffer.put("Test".getBytes(StandardCharsets.UTF_8));byteBuffer.flip();System.out.println(Arrays.toString(convert(byteBuffer, ByteOrder.BIG_ENDIAN)));byteBuffer.flip();System.out.println(Arrays.toString(convert(byteBuffer, ByteOrder.LITTLE_ENDIAN)));}/*** 必须调用完后flip()才可以调用此方法* @param byteBuffer* @param bo* @return*/public static byte[] convert(ByteBuffer byteBuffer, ByteOrder bo) {byteBuffer.order(bo);int len = byteBuffer.limit() - byteBuffer.position();byte[] bytes = new byte[len];if (byteBuffer.isReadOnly()) {return null;} else {byteBuffer.get(bytes);}return bytes;}}

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

相关文章

浅谈大小端(Endian)与位域

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

Endian

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

一个神奇的网站 Papers with code

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

这是一个神奇的网站

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

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

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

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

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

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

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

快速下载一个网站

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

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

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

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

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

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

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

Craigslist :一个神奇的网站

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

codewars 一个很神奇的网站

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

p站,一个神奇的网站

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

记录一个神奇的网站

Aurorahttps://arr003.network/

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

十一长假已经只剩下最后两天,你给自己定下的假期学习计划进展如何? 你是在家,还是在想家,还是在其他国家? 为了让家里蹲的诸位不虚度光阴,也为了让那些堵在高速路上的童鞋打发时间,现隆重给大家…

五个私藏已久的神奇网站,你想要的全都有

1⃣️悦音配音 一款非常实用的创作工具,做各种风格的配音,提取你想要的视频文案或音频文案,导入图片,一键生成三联封面,无水印视频下。 2⃣️万有导航 聚合资源网站,一个庞大的资源整合神仙网站&#xff…

8个好玩又实用的神奇网站,帮你打开新世界大门!

有小伙伴问:有没有即轻松好玩,又可以学到各种奇怪知识的网站? 下面向你安利8个网站,快来看看吧! Wikihow zh.wikihow.com 这是一个百科全书式的网站,内容是为我们生活中会遇到的各种问题提供了解决方案…

9个宝藏级的神奇网站!个个精品,让你人生开挂,效率翻倍

分享9个让你先是眼前一亮,继而觉得好用的神奇网站,每个都是效率神器! 01 . designtools 一个超级神奇的网站,我把它叫做设计师必备网站! 里面包含了11个超强的设计工具,每一个都很惊艳,举个…

如何关掉 pyg解密小组声明窗口 (飘云阁番茄插件)

vs 重新安装番茄助手之后,替换了crack 里面的VA_X.dll。 重启电脑,打开vs 弹出下面的窗口 网上查了很多资料说什么要去DLL、清理注册表,都不管用。 【原因】 安装的番茄小助手没有注册成功,需要将剪切板上的注册信息输入到番茄插…