如何以十六进制读取文件
How to read files as hex
我希望能够得到一个具有任何扩展名的输入文件,并以十六进制或二进制形式读取它,但以字符串或其他形式读取。不像 python 中的 open(file_path, 'rb')
。最好在 python 或 JS.
可以使用带有“x”格式的 print() 将一个字节格式化为 2 位十六进制字符串。使用 'rb' 文件模式以二进制模式打开文件,将文件流处理为字节序列。您可以一次读取一个数据块,然后一次一个字节地遍历每个块。
import sys
with open(sys.argv[1], 'rb') as fin:
while True:
data = fin.read(16)
if len(data) == 0:
break
# iterate over each byte in byte sequence
for b in data:
print(' {:02x}'.format(b), end='')
print()
如果 运行 上面的代码在源代码中,那么输出将是每行 16 个十六进制数字的序列。
输出:
69 6d 70 6f 72 74 20 73 79 73 0d 0a 0d 0a 77 69
74 68 20 6f 70 65 6e 28 73 79 73 2e 61 72 67 76
...
3d 27 27 29 0d 0a 20 20 20 20 20 20 20 20 70 72
69 6e 74 28 29 0d 0a
例如,第一行“import sys”输出为 69 6d 70 6f 72 74 20 73 79 73
,后跟 0d 0a
用于 CR LF 字符。
我希望能够得到一个具有任何扩展名的输入文件,并以十六进制或二进制形式读取它,但以字符串或其他形式读取。不像 python 中的 open(file_path, 'rb')
。最好在 python 或 JS.
可以使用带有“x”格式的 print() 将一个字节格式化为 2 位十六进制字符串。使用 'rb' 文件模式以二进制模式打开文件,将文件流处理为字节序列。您可以一次读取一个数据块,然后一次一个字节地遍历每个块。
import sys
with open(sys.argv[1], 'rb') as fin:
while True:
data = fin.read(16)
if len(data) == 0:
break
# iterate over each byte in byte sequence
for b in data:
print(' {:02x}'.format(b), end='')
print()
如果 运行 上面的代码在源代码中,那么输出将是每行 16 个十六进制数字的序列。
输出:
69 6d 70 6f 72 74 20 73 79 73 0d 0a 0d 0a 77 69
74 68 20 6f 70 65 6e 28 73 79 73 2e 61 72 67 76
...
3d 27 27 29 0d 0a 20 20 20 20 20 20 20 20 70 72
69 6e 74 28 29 0d 0a
例如,第一行“import sys”输出为 69 6d 70 6f 72 74 20 73 79 73
,后跟 0d 0a
用于 CR LF 字符。