我已经浏览了有关堆栈溢出的可用问题,但我没有发现任何与我的问题相关的问题。我有包含二进制数据的图像,每个像素我都作为一个字节访问,但作为我的图像二进制文件,我可以使用位打包来释放内存。但是我不知道该怎么做,也找不到任何好的学习资源。
有人可以帮帮我吗?
我已经浏览了有关堆栈溢出的可用问题,但我没有发现任何与我的问题相关的问题。我有包含二进制数据的图像,每个像素我都作为一个字节访问,但作为我的图像二进制文件,我可以使用位打包来释放内存。但是我不知道该怎么做,也找不到任何好的学习资源。
有人可以帮帮我吗?
不确定您找到了哪些参考资料......或者实际问题是什么。
你可以这样做:
typedef enum { ZERO, ONE, TWO, THREE } pix2;
uint8_t pack_values(pix2 p1, pix2 p2, pix2 p3, pix4 p4)
{
return (p1 << 6) | (p2 << 4) | (p3 << 2) | p4;
}
以上将四个两位值“打包”成一个 8 位值。像这样分配位(请原谅我的 ASCII 图形技能):
+-+-+-+-+-+-+-+-+
bit: |7|6|5|4|3|2|1|0|
+-+-+-+-+-+-+-+-+
value: | p1| p2| p3| p4|
+---+---+---+---+