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

Python使用dpkt解析PCAP时如何将二进制IP字节串转为十六进制格式

问题解决方法

你拿到的ip.src是Python标准的bytes类型,不需要手动逐字节解析,用内置方法就能稳定完成转换。


转换为空格分隔的十六进制字符串(c0 a8 00 28格式)

Python 3.8及以上版本,直接用bytes自带的hex()方法,传入空格作为分隔符即可:

hex_str = ip.src.hex(' ')
print(hex_str)
# 输入b'\xc0\xa8\x00('时输出:c0 a8 00 28

如果是低于3.8的Python版本,用生成器逐字节格式化即可,逻辑同样稳定:

hex_str = ' '.join(f'{byte:02x}' for byte in ip.src)

以上两种写法都会强制把每个字节转为两位小写十六进制,不会因为字节值对应ASCII可打印字符(比如你例子里0x28对应字符()出现解析错误,所有字节的转换结果一致。


更适配你场景的写法:直接转可读点分十进制IP

你读取pcap的目标是拿源/目的IP地址,不需要绕路转十六进制,用Python内置socket库的标准方法可以直接把4字节IP二进制串转为192.168.0.40格式的字符串:

import socket
src_ip = socket.inet_ntoa(ip.src)
dst_ip = socket.inet_ntoa(ip.dst)
print(src_ip) # 输入b'\xc0\xa8\x00('时直接输出192.168.0.40

另外提一句你贴的示例代码有个笔误:你打开文件的变量名是file,传入pcap解析器时写的是f,运行会触发变量不存在的报错,改成dpkt.pcap.Reader(file)即可正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:24:21