我注意到C语言中没有单个位的内置结构。有(无符号)char和int,它们是8位(一个字节),还有64+位的long等等(uint64_t、bool等)。我在编写哈夫曼树时遇到了这个问题,某些字符的编码不一定完全是8位长(如00101),因此没有有效的方法来存储编码。我不得不寻找临时解决方案,例如字符串或布尔数组,但这需要更多的内存。
但是,我的问题更普遍:是否有一种好的方法来存储位数组或某种用户定义的结构?我搜遍了网络,但最小的结构似乎是8位(一个字节)。我尝试了像“int a:1”这样的东西,但它不起作用。我读过关于位域的文章,但它们不能简单地实现我想做的事情。我知道已经有关于C++中是否有单个位的结构的问题,但我主要想知道在C中存储类似00101这样的编码最节省内存的方法。
但是,我的问题更普遍:是否有一种好的方法来存储位数组或某种用户定义的结构?我搜遍了网络,但最小的结构似乎是8位(一个字节)。我尝试了像“int a:1”这样的东西,但它不起作用。我读过关于位域的文章,但它们不能简单地实现我想做的事情。我知道已经有关于C++中是否有单个位的结构的问题,但我主要想知道在C中存储类似00101这样的编码最节省内存的方法。