我希望能够给一个具有任何扩展名的输入文件,并以十六进制或二进制的形式读入,但要以字符串或其他方式读入。不是像python中的
open(file_path, 'rb')
。最好是用python或JS。
如何读取文件为十六进制
3
人不认可
2
个评论
open(file_path, "rb")有什么问题吗?你可以使用索引访问所有的字节,甚至可以改变它们?
KeMeK
:
@OmOWalker 它不会让我逐一循环查看。或者它有,但我没有意识到。
KeMeK
发布于
2021-07-16
1
个回答
CodeMonkey
发布于
2021-07-16
已采纳
0
人赞同
可以使用print()的 "x "格式将一个字节格式化为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个十六进制数字的序列。
Output:
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