我在结构中回填字节时得到struct.error: bad char in struct format
,即使没有对它们进行任何更改。
我正在尝试对24位BMP图像的RGBTRIPLE中的每个字节执行按位操作。为了简单起见,我发布的代码只包含一个代表Bitmap中像素的样本字节序列;我不会对它进行任何按位操作,只是尝试将其打包回来。
from struct import *
from collections import namedtuple
def main():
RGBTRIPLE = namedtuple('RGBTRIPLE', 'rgbtRed rgbtGreen rgbtBlue')
rgbt_fmt = '=BBB'
rgbt_size = calcsize(rgbt_fmt)
rgbt_buffer = b'\x1c\x1e\x1f'
rgbt = RGBTRIPLE._make(unpack(rgbt_fmt, rgbt_buffer))
rgbtRed = rgbt.rgbtRed
rgbtGreen = rgbt.rgbtGreen
rgbtBlue = rgbt.rgbtBlue
rgbt_buffer = pack('rgbt_fmt', rgbtRed, rgbtGreen, rgbtBlue)
if __name__ == "__main__":
main()
根据我的理解,问题在于,当我解压缩字节时,我的内容大小为> 1个字节。以1字节为单位修复这些整数的最佳方法是什么,所以我可以使用相同的=BBB
结构格式将它们打包回来?