1

我已经浏览了有关堆栈溢出的可用问题,但我没有发现任何与我的问题相关的问题。我有包含二进制数据的图像,每个像素我都作为一个字节访问,但作为我的图像二进制文件,我可以使用位打包来释放内存。但是我不知道该怎么做,也找不到任何好的学习资源。

有人可以帮帮我吗?

4

1 回答 1

3

不确定您找到了哪些参考资料......或者实际问题是什么。

你可以这样做:

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|
       +---+---+---+---+
于 2013-11-07T10:55:51.040 回答