Python将字节转换为字符串

Python将字节转换为字符串,python,type-conversion,byte,Python,Type Conversion,Byte,我有以下代码: 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. 以及以下形式

我有以下代码:

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'A',b'D',b'O',b'D',b'E',等等。这里发生了一些事情

可以包含以拉丁语-1或UTF-8编码的文本块。
文本
块以拉丁语-1编码,您需要使用
拉丁语-1'
编解码器对其进行解码
iTXt
块以UTF-8编码,需要使用
'UTF-8'
编解码器进行解码

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


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

您不能有包含非ascii的字节,其中是
b'öxff'
等。。来自?@PadraicCunningham我想他的意思是
b'\xff'
,等等。如果你想解码,你需要使用正确的编解码器<代码>b'\xa4'。使用拉丁语-1解码(“iso-8859-15”)
将是
'€'
'-d'