微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我尝试读取二进制文件并希望以转储等格式显示它

如何解决我尝试读取二进制文件并希望以转储等格式显示它

从python程序二进制读取我得到以下数据:

hex_string = '0004576965646572766f726c61676500'
print(bytes.fromhex(hex_string))
    result --> b'\x00\x04Wiedervorlage\x00'

print(bytes.fromhex(hex_string).hex(' ',4))
    result --> 00045769 65646572 766f726c 61676500

print(bytes.fromhex(hex_string).decode("ASCII"))
    result --> ♦Wiedervorlage

但我想要的是这样的:

00045769 65646572 766f726c 61676500
....W.i. e.d.e.r. v.o.r.l. a.g.e...

我试图为此找到一个函数,但找不到任何人。

非常感谢您提供有用的提示。 保罗

解决方法

我认为没有标准函数可以完全按照您的要求执行操作,您也没有提出问题。

这是一种实现它的方法,虽然有点丑:

hex_string = "0004576965646572766f726c61676500"

printable_range = range(0x20,0x7F)
chunks = [hex_string[i : i + 8] for i in range(0,len(hex_string),8)]  # 4 bytes each = 8 hex digits
res = ""
for chunk in chunks:
    for byte in bytes.fromhex(chunk):
        if byte in printable_range:
            res += chr(byte) + "."
        else:
            res += ".."
    res += " "

print(bytes.fromhex(hex_string).hex(" ",4))
print(res)

输出

00045769 65646572 766f726c 61676500
....W.i. e.d.e.r. v.o.r.l. a.g.e... 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。