无需登录 数据私有 本地保存

字节序转换工具 - 大端与小端互转

12
0
0
0

字节序转换工具

大端序(Big-Endian)与小端序(Little-Endian)互转 · 支持16/32/64位 · 字节可视化

0x
支持输入带或不带空格的十六进制字符(0-9, A-F, a-f)
大端序 Big-Endian 高位在低地址
--
小端序 Little-Endian 低位在低地址
--
内存地址视图对比

下图展示同一数据在大端序和小端序下,各字节在内存中的排列方式(地址从左到右递增)

内存地址 +0 +1 +2 +3 +4 +5 +6 +7
大端序 -- -- -- -- -- -- -- --
小端序 -- -- -- -- -- -- -- --
常见数值速查

常见问题与知识点

大端序(Big-Endian)是一种字节序排列方式,最高有效字节(MSB)存储在最低的内存地址。例如,32位数值 0x12345678 在大端序下,内存中从低地址到高地址依次存储为:12 34 56 78。这符合人类书写和阅读数字的习惯(高位在前)。网络协议(如TCP/IP)普遍采用大端序,因此大端序也被称为网络字节序

小端序(Little-Endian)是一种字节序排列方式,最低有效字节(LSB)存储在最低的内存地址。例如,32位数值 0x12345678 在小端序下,内存中从低地址到高地址依次存储为:78 56 34 12。x86/x64架构的CPU(如Intel和AMD处理器)大多采用小端序,因此小端序也被称为主机字节序(在大多数个人电脑上)。

当不同字节序的系统之间交换数据时,如果不对字节序进行转换,数据会被错误解析。常见场景包括:网络通信(网络字节序为大端,主机可能为小端)、跨平台文件格式(如BMP图片使用小端序存储)、嵌入式系统开发二进制数据调试与分析、以及数据库存储与迁移等。

小端序系统:Intel x86/x64、AMD处理器、大多数ARM处理器(可配置)、Windows和Linux在x86上的本地字节序。
大端序系统:网络协议(TCP/IP、UDP等)、Java虚拟机(底层统一为大端)、PowerPC(部分模式)、SPARC、MIPS(部分模式)、以及一些嵌入式RISC处理器。值得注意的是,ARM处理器支持双端模式,但通常配置为小端序。

可以通过一个简单的C语言程序检测:创建一个16位整数 0x0001,然后检查其第一个字节。如果第一个字节是 0x00,则为大端序;如果是 0x01,则为小端序。在命令行中,也可以使用 lscpu | grep "Byte Order"(Linux)或查看系统信息。大多数现代PC都是小端序。

字节序转换的核心操作是字节反转:将数据按字节(每8位一组)切分,然后逆序排列。例如,对于4字节数据 A B C D,反转后得到 D C B A。在编程中,常用函数如 htonl()ntohl()(32位网络字节序转换)、htons()ntohs()(16位)以及现代C++中的 std::byteswap 来实现。

本工具支持十六进制字符串输入,可带或不带 0x 前缀,支持空格分隔(如 12 34 56 78)。支持2字节(16位)、4字节(32位)、8字节(64位)以及自定义字节长度。输入会自动补齐前导零或截断高位以适应选择的字节长度。同时提供常见数值速查按钮方便快速体验。