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