c – 按位操作是否会帮助我序列化一些bool?
发布时间:2020-12-16 09:32:16 所属栏目:百科 来源:网络整理
导读:我不习惯二进制文件,而我正试图抓住它.我设法存储了一些整数和unsigned char,并且没有太多的痛苦就读了它们.现在,当我试图保存一些布尔值时,我看到我的每个bool在我的文件中只占用了1个八位字节,这似乎是合乎逻辑的,因为一个单独的bool存储在一个字符大小的
我不习惯二进制文件,而我正试图抓住它.我设法存储了一些整数和unsigned char,并且没有太多的痛苦就读了它们.现在,当我试图保存一些布尔值时,我看到我的每个bool在我的文件中只占用了1个八位字节,这似乎是合乎逻辑的,因为一个单独的bool存储在一个字符大小的数据中(如果我错了,请纠正我) !).
但是因为我将要有3或4个bool来序列化,我认为将它们存储起来是浪费:00000001 00000001 00000000,例如,当我可以拥有00000110时.我想要获得这个我应该使用按位运算,但我对他们不太好……所以有人可以告诉我: >如何使用按位操作在一个八位字节中存储多达8个bool? 我正在使用C,但我猜大多数C语法语言将使用相同类型的操作. 解决方法
以一个字节存储bool:
bool flag; // value to store unsigned char b = 0; // all false int position; // ranges from 0..7 b = b | (flag << position); 读回来: flag = (b & (1 << position)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |