c - 将 8 位移动到 8 个单独字节的最佳方法
问题描述
我有一个 8 位的状态寄存器。我想将每个单独的位移动到一个字节以进行进一步处理。看起来应该很容易,但我想出的每一个解决方案都很复杂。我正在考虑使用 for next 循环遍历这些位并将它们转储到一个数组中,但我的解决方案太混乱了。
解决方案
这基本上就是你想要做的事情。它使用按位运算符和一个uint8_t
数组来使每个位成为一个单独的字节:
void bits_to_bytes(uint8_t status, uint8_t bits[8])
{
int ctr;
for( ctr = 0; ctr < 8; ctr++ )
{
bits[ctr] = (status >> ctr) & 1;
}
}
好的,所以更深入一点:
此代码循环遍历字节中的位,然后分配bits[bit_number]
给 的bit_number
第 th 位status
。
如果您想颠倒存储位的顺序,只需更改bits[ctr]
为bits[(8-1)-ctr]
.
推荐阅读
- jquery - 使用 Ajax 的带有自定义分类法的 Wordpress 多个自定义帖子类型过滤器 - 所有新创建的帖子都不会在响应中显示
- node.js - 如何修复不再工作的heroku部署的应用程序
- npm - 在 ADO 上的构建定义中跳过特定的 npm 包
- javascript - 如何向上扩展textarea及其父div
- javascript - 如何使用单个 IntersectionObserver 为每个观察到的元素执行唯一的回调?
- tensorflow - 来自高效网络迁移学习的错误预测
- data-visualization - 如何将工具提示添加到多系列折线图
- ruby-on-rails - 我正在使用 Rails 序列化来存储数据数组,但我的表单没有保存数据数组
- here-api - 这里 NMAWaypoint ViaWaypoint 在卡车运输模式
- css - React-Native 中的双模态?