0

我一次读取 4 个字节的 bmp 文件,以从 .bmp 文件中收集颜色以创建调色板。当我阅读文件时,我得到b'\x8b\xc3\**x00J**\x00'. 如果我在十六进制编辑器中打开这个文件,字节串是b'\x8b\xc3\**x4a**\x00. 现在,当我尝试将特定字节放入dispalyio.palette. 我的理解是 Python 自动将字节(具有有效的 ascii 表示)解码为 ascii。

最终,我只想获取原始字节字符串,一次 4 个字节,而不需要从所述文件中解码。我的代码如下所示:

palette = displayio.Palette(2)
with open("images/f.bmp", "rb") as f:
    f.seek(137)
    for val in range(0, 1):
        try:
            c_bytes = f.read(4)
            #print(c_bytes[0:2])
            print(b''.join([c_bytes[3:4], c_bytes[2:3], c_bytes[0:2]]))
            palette[0] = b''.join([c_bytes[3:4], c_bytes[1:3], c_bytes[0:2]])
        except Exception as e:
            print(e)

这是在 CircuitPython 6.3.0 上使用该displayio模块。对于那些不熟悉的人来说,CircuitPython 只是用于 MCU 的 Python 的精简版,它使用 Python 3 作为基础。

4

0 回答 0