python - 将十六进制转储转换为 ASCII
问题描述
所以我想知道是否有可能使用 Bash 或 Python 将以下十六进制代码转换为它的 ascii 输出,就像在 xxd 中一样。因为我使用 OCR 从下图中获取文本。
有没有一种使用 bash 或 python 的方法可以将以下十六进制转储转换为 ascii 字符?
(十六进制转储,只是没有 ascii 的十六进制部分)
00000690 52 4D 41 50 00 00 01 00 08 00 00 00 08 00 00 00
000006A0 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000006B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000006C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000006D0 00 00 00 00 00 00 00 00 30 E0 01 04 90 9B 00 01
000006E0 B9 4D E9 46 5B 43 00 10 B2 BA FB 46 BA 24 13 16
000006F0 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
00000700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
解决方案
我希望我能很好地理解您的问题:您想从类似于以下输出的十六进制转储中打印 ASCII 字符hexdump
:
txt = '''
00000690 52 4D 41 50 00 00 01 00 08 00 00 00 08 00 00 00
000006A0 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000006B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000006C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000006D0 00 00 00 00 00 00 00 00 30 E0 01 04 90 9B 00 01
000006E0 B9 4D E9 46 5B 43 00 10 B2 BA FB 46 BA 24 13 16
000006F0 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
00000700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '''
for line in txt.splitlines():
if not line.strip():
continue
address, *nums = line.split()
# printable ascii characters are from 32 to 127, else print a dot '.':
print('{} {} {}'.format(address, ' '.join(nums), ''.join(chr(int(n, 16)) if 32 <= int(n, 16) <= 127 else '.' for n in nums)))
印刷:
00000690 52 4D 41 50 00 00 01 00 08 00 00 00 08 00 00 00 RMAP............
000006A0 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000006B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000006C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000006D0 00 00 00 00 00 00 00 00 30 E0 01 04 90 9B 00 01 ........0.......
000006E0 B9 4D E9 46 5B 43 00 10 B2 BA FB 46 BA 24 13 16 .M.F[C.....F.$..
000006F0 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................
00000700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
推荐阅读
- java - 杰克逊:如何将逗号分隔的字符串值解析为字符串 []
- shopify - 显示产品集合中的下 5 个产品
- ios - iOS如何为每个目标创建配置文件
- html - 如何从获取的二进制数据(二进制数据是从 REST API 接收对象的元素之一)在前端 Angular 中显示 pdf?
- android - 无法添加窗口,恢复活动时出现 BadTokenException
- react-native-ios - 组件未定义反应原生
- java - 如何使用 ResultSet 进行循环?
- java - 这些代码行之间有什么区别?
- hiveql - 带日期的 Mod 函数用法
- r - 固定一个轴时如何在两点之间画一条线(时间序列)