gpt4 book ai didi

Python 将字节转换为字符串

转载 作者:太空狗 更新时间:2023-10-30 03:00:44 25 4
gpt4 key购买 nike

我有以下代码:

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)

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

b'öx1a', b'öxff', b'öxa4', etc.

还有这种形式的字节:

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

现在出于某种原因,当我使用上面的代码将字节转换为字符串时,它似乎不适用于十六进制形式的字节,但它适用于其他所有内容。

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

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

有谁知道为什么会这样吗?

最佳答案

这里发生了一些事情。

PNG file format可以包含以 Latin-1 或 UTF-8 编码的文本 block 。 tEXt block 以 Latin-1 编码,您需要使用 'latin-1' 编解码器对其进行解码。 iTXt block 以 UTF-8 编码,需要使用 'utf-8' 编解码器进行解码。

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

如果您尝试从文件中解释二进制数据,请查看 struct用于该目的的模块。

关于Python 将字节转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28222903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com