DevToys Web Pro iconDevToys Web Pro博客
为我们评分:
试用浏览器扩展:

字节序转换

8 bytes (2 words)
字长

输入(十六进制)

  • 交换后的输出

  • 技术详情

    字节序交换工具的工作原理

    工具功能

    字节序交换工具会在可配置的字长(2、4 或 8 字节)内反转十六进制输入的字节顺序。它用于在以十六进制存储的定宽整数的小端与大端表示之间转换,这在处理二进制文件格式、网络协议或对字节序有分歧的底层调试工具时非常常见。

    常见开发者使用场景

    逆向工程师会将来自 x86 或 ARM(小端)以及 PowerPC 或 MIPS(历史上为大端)的十六进制转储统一化,以便跨架构比较数值。网络工程师在将主机字节序整数嵌入抓包数据之前,会把它们转换为网络字节序(始终为大端)。嵌入式开发者通过重新对齐字节,使其符合分析工具期望的格式,从而调试存储在闪存中的结构。

    数据格式、类型或变体

    输入接受带或不带 `0x` 前缀的十六进制以及任意空白字符。为清晰起见,输出以空格分隔的小写十六进制字节呈现。2、4、8 字节的字长分别对应 16、32、64 位整数。多个字会被独立交换:在 4 字节字长下,12345678 9ABCDEF0 会变为 78 56 34 12,随后是 F0 DE BC 9A。

    常见陷阱与边界情况

    输入必须是完整的字节数(十六进制位数为偶数),并且是完整的字数(可被配置的字长(字节)整除)。尺寸不匹配会返回错误,而不是静默截断。网络字节序始终为大端,而 x86 / ARM 使用小端——在读取或写入线缆格式整数时需要交换字节。

    何时使用此工具而非代码

    在阅读二进制转储或调试时,用浏览器工具进行一次性转换。在代码中,优先使用带显式 `littleEndian` 标志的 JavaScript `DataView`、Python `int.from_bytes` 中的 `byteorder='little'|'big'`、Go 的 `binary.LittleEndian.Uint32`,或 C 中的 `ntohl` / `htonl`——这些更能清晰表达意图并避免十六进制往返转换。