【发布时间】:2019-03-18 11:53:33
【问题描述】:
我有一个数组定义为
int data[k];
其中 k 是数组的大小。数组的每个元素都是 0 或 1。我想将二进制数据保存在另一个定义为
的数组中uint8_t new_data[k/8];
(k 通常是 8 的倍数)。
如何在 C 中做到这一点?
提前致谢
【问题讨论】:
-
"向量的每个元素都是二进制的。"你的意思是每个元素是0还是1? k 是否保证是 8 的倍数?
-
数组,不是向量。
-
还有:这些位应该按什么顺序打包?
-
不清楚你在问什么......在所有其他与 C 中的序列化相关的问题中,在写这个答案之前你尝试过什么?您是否尝试将模/除或二进制和/左移与赋值结合使用?
-
如果您没有想到任何这些想法,为什么不呢?你在看哪本书?你在看书,对吧?因为把 C 当作一个“神秘的黑匣子”来学习是很危险的;您最终学习的不是 C,而是 C 的某些子集,当您将其迁移到不同的系统配置或出于其他一些琐碎的原因(如操作系统更新)时,它会出现异常行为......这个问题还有其他恶魔......你需要花时间编辑你的问题,起草它,就像你将它提交给一个团队进行审查并接受审查......因为就目前而言,至少可以说是令人困惑的。