如何以十六进制读取文件

时间:2021-07-15 16:22:09

标签: javascript python hex

我希望能够获得具有任何扩展名的输入文件,并将其以十六进制或二进制形式读取,但以字符串或其他形式读取。不像python中的open(file_path, 'rb')。最好使用python或JS。

编辑:@JasonM1 的回答对我有用。原来我不知道如何正确使用 open()。随意投反对票。

1 个答案:

答案 0 :(得分:0)

可以使用带有 "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

例如,对于 CR LF 字符,第一行“import sys”输出为 69 6d 70 6f 72 74 20 73 79 73 后跟 0d 0a

相关问题