十六进制编码/解码器
十六进制(Hex)编码使用 16 个符号(0-9 和 A-F)表示二进制数据。每个字节变成两个十六进制字符。此工具解码十六进制字符串以显示原始内容,使用魔术字节识别文件类型,并提供类似十六进制编辑器的查看器用于二进制检查。
常见用例
- 解码来自 API 和日志的十六进制编码数据
- 检查二进制文件头和魔术字节
- 分析网络数据包载荷
- 调试加密值(哈希、密钥、IV)
- 查看数据库或文件中的原始二进制数据
- 转换调试工具输出的十六进制转储
功能
- 解码多种格式的十六进制字符串(纯文本、空格分隔、0x 前缀、冒号分隔、C 数组)
- 带偏移量、十六进制字节和 ASCII 表示的十六进制查看器
- 自动检测解码后的内容类型(JSON、XML、文本等)
- 链式检测——自动检测解码内容并提供"解码为 X"按钮
- 使用魔术字节识别二进制数据的文件类型
- 大文件的虚拟滚动和懒加载块
- 在不同十六进制格式之间转换(纯文本、空格分隔、0x、冒号、C 数组)
- 将文本编码为多种格式的十六进制
示例
提示
- 十六进制编码使数据大小翻倍(每个字节变成 2 个字符)。
- 常见魔术字节:PDF 以 25504446(%PDF)开头,ZIP 以 504B0304 开头。
- 图像数据(PNG、JPEG 等)会被自动检测并使用图像分析器工具。
- 0x 前缀在大多数编程语言中表示十六进制。
- MAC 地址和 UUID 使用冒号或连字符分隔符。
- 十六进制不区分大小写:0xFF 等于 0xff。
理解 十六进制编码/解码器
十六进制(Hex)编码使用 16 进制表示法来表示二进制数据,其中每个字节精确映射到由 0-9 和 A-F 组成的两个字符。这种直接的字节到文本映射使十六进制成为调试、密码学、网络和底层编程中二进制数据的标准表示。
与 Base64 使用 6 位分组模糊了字节边界不同,每对十六进制字符精确映射到一个字节,使得读取单个值变得简单。内存地址、寄存器内容、网络数据包转储、文件头和加密值都通常以十六进制显示。
十六进制字符串出现在多种格式中。纯十六进制(48656c6c6f)常见于 API。空格分隔的十六进制(48 65 6c 6c 6f)出现在数据包捕获中。冒号分隔的十六进制(48:65:6c:6c:6f)用于 MAC 地址和证书指纹。0x 前缀(0x48、0x65)是 C、JavaScript、Python 和大多数语言中的标准十六进制字面量。C 风格数组({0x48, 0x65})在源代码中嵌入二进制数据。
文件类型识别依赖魔术字节——文件开头的特定十六进制序列,用于标识文件格式。PDF 以 25504446(%PDF)开头,PNG 以 89504E47 开头,ZIP 以 504B0304 开头,ELF 可执行文件以 7F454C46 开头。识别这些签名对于调试文件处理代码和分析二进制数据至关重要。
十六进制和 Base64 都将二进制数据编码为文本,但它们有不同的取舍。十六进制将每个字节映射到 2 个字符,使数据大小翻倍(100% 开销),而 Base64 将每 3 个字节映射到 4 个字符,仅约 33% 的开销。Base64 对于大数据更节省空间,使其成为在文本格式中嵌入二进制内容的更好选择。十六进制对于字节级检查更具可读性,使其成为调试、加密值和协议分析中个别字节值重要的场景的标准。
魔术字节(也称文件签名)是文件最开头的特定字节序列,无论文件扩展名如何都能标识其格式。PNG 文件以 89 50 4E 47 开头,JPEG 以 FF D8 FF 开头,ZIP 以 50 4B 03 04 开头。Unix 的 "file" 命令依赖魔术字节来检测文件类型,此工具也使用同样的技术来识别十六进制数据中的二进制内容。
十六进制不区分大小写,因为数字 A-F 表示值 10-15,无论是大写还是小写——0xFF 和 0xff 都表示十进制 255。大小写的选择纯粹是惯例:大写常见于规范和哈希输出,而小写常见于 CSS 颜色和 URL 编码等 Web 开发上下文中。0x 前缀在大多数编程语言中表示十六进制数字字面量,包括 C、C++、Java、JavaScript、Python、Go 和 Rust。没有前缀时,像 "10" 这样的值在十进制和十六进制之间会产生歧义;写成 0x10 则明确表示十六进制(十进制 16)。