You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确十六进制化含转义字符的捕获数据包字节数据?

字节数据的Hexlify处理差异解析

首先得明确你要处理的对象到底是什么,不同的处理目标对应完全不同的结果:

1. 处理捕获到的原始二进制字节(数据包分析的正确场景)

你从数据包里抓到的b'\x18\x05'本质是两个二进制字节:0x18(十进制24)和0x05(十进制5)。

用Python的hexlify或者bytes.hex()处理是完全正确的:

import binascii
raw_data = b'\x18\x05'
# 两种方式都能得到原始字节的十六进制表示
print(binascii.hexlify(raw_data))  # 输出 b'1805'
print(raw_data.hex())              # 输出 '1805'

这个结果直接对应你捕获到的真实二进制数据,是数据包分析场景下需要的正确结果。

2. 处理Python字节字面量的字符串形式

在线编码器得到的62275c7831385c78303527,本质是把Python代码里的字节字面量字符串(也就是"b'\\x18\\x05'"这个字符串,包含b、单引号、反斜杠、x、数字这些字符)转成十六进制。每个字符对应的ASCII码十六进制如下:

  • b → 62,' → 27,\ → 5c,x →78,1→31,8→38,0→30,5→35
    拼起来就是在线编码器的结果。

如果要在Python里复现这个结果,代码是:

literal_str = "b'\\x18\\x05'"
print(literal_str.encode().hex())  # 输出 '62275c7831385c78303527'

3. 你手动得到的783138783035

这个是把"\x18\x05"(去掉b和单引号的字面量字符串)里的每个字符转成十六进制:x→78,1→31,8→38,x→78,0→30,5→35,拼起来就是这个结果,本质也是处理字符串,不是真实的数据包字节。

总结:如果是分析数据包的二进制内容,用hexlify或者bytes.hex()得到的1805才是正确的;其他结果都是在处理"表示字节的字符串",不是真实的数据包字节。

内容的提问来源于stack exchange,提问作者admfotad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:00:28