如何解决我尝试读取二进制文件并希望以转储等格式显示它
从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 举报,一经查实,本站将立刻删除。