Python将字节转换为字符串

2024-05-14 04:23:59 发布

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

我有以下代码:

with open("heart.png", "rb") as f:

    byte = f.read(1)

    while byte:

        byte = f.read(1)

        strb = byte.decode("utf-8", "ignore")

        print(strb)

从“”读取字节时心脏.png“我必须读取十六进制字节,例如:

^{pr2}$

以及以下形式的字节:

b'A', b'D', b'O', b'D', b'E', etc.    <- spells ADOBE

现在出于某些原因,当我使用上面的代码从字节转换为字符串时,它似乎不能处理十六进制形式的字节,但它适用于其他所有类型。在

所以当b'öx1a'出现时,它将其转换为""(空字符串)

b'H'出现时,它将其转换为"H"

有人知道为什么会这样吗?在


Tags: 字符串代码read字节pngaswithopen
1条回答
网友
1楼 · 发布于 2024-05-14 04:23:59

这里发生了一些事情。在

PNG file format可以包含以拉丁语-1或UTF-8编码的文本块。tEXt块是用拉丁语1编码的,您需要使用'latin-1'编解码器对它们进行解码。iTXt块用UTF-8编码,需要用'utf-8'编解码器解码。在

但是,您似乎在尝试解码单个字节,而UTF-8中的字符可能跨越多个字节。因此,假设您想读取UTF-8字符串,那么您应该在尝试解码之前读取要解码的字符串的整个长度。在

相反,如果您试图从文件中解释二进制数据,请查看用于此目的的^{}模块。在

相关问题 更多 >