如何防止解码文件中的字节?

问题描述

我一次读取 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 为基础。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)