我把图像文件读成二进制奇怪的符号

2024-06-16 13:58:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中读取了一个二进制图像文件:

open('chall.png, 'rb').read()

结果:

b'\xe0>8.~cxfein{ ;-0lek\xf7virejneinv\xe7I\x01blo7\x14"1\x07;\x03\x1bE\x19\x1c\x19\x0f\x1a\x05\x07L\x11\x10\x1e\x13I\x16\x11\x0b\nei\x16\xac\x84\xeb2\xf4O\xdcd*\x89\x1af7`e\xf7i\xd7j\xd7\x03\xe7\x15\x8c\x80\x92,$>L\x0f\xa4\xf2\x94\x98\xe9IE\x06@7\xb5\xfc |g\xe1{\xbf\x11\x93\x94\x1e\x11\x88\xaf8\x13\xcb#\x08\xbf\x1b\xdeO-\x1c\xb6M\xf6FS\xcb6\x9c\n,\x99\x90\x90\x14\xfb\xf8\x97\x1a\x94\xcb\x

(文件的二进制代码比这个大)

等等什么?二进制有很多1和0。好吧,也许这是十六进制(一种使二进制更易于人类阅读的格式)

不,这当然不是十六进制!怎么回事

我在这里处理什么

我怎样才能把它转换成十六进制或比这个更可读的(你可能猜到了,我对这件事还很陌生。请友善点。)


编辑:

file = open('image.png', 'rb').read()
file[0]
#output: 224
file[1]
#output: 62 

为什么第一个“字符”(第一个索引)的输出是224?是不是应该是\xe0


Tags: readpng二进制openfilex03x11rb
1条回答
网友
1楼 · 发布于 2024-06-16 13:58:12

当您读取一个二进制数据并试图打印它时,默认情况下,二进制数据会被尝试并解码成utf-8。这就是为什么你会看到奇怪的人物。在打印之前,下面的代码格式为十六进制。使用下面的代码,您应该可以看到不带任何stage字符的十六进制数据

for i in open('image.png', 'rb').read():
    print(r'{0:#x}'.format(i), end=' ')

相关问题 更多 >