在c中将二进制int转换为二进制uint8_t

标签 c binary int hex uint8t

我有一个数组定义为

int data[k];

其中 k 是数组的大小。数组的每个元素都是 0 或 1。我想将二进制数据保存在定义为

的另一个数组中
uint8_t new_data[k/8];

(k通常是8的倍数)。
我怎样才能用 C 语言做到这一点?

提前致谢

最佳答案

假设 k8 的倍数,假设“每个元素都是二进制”,意思是“每个 int >01”,同时假设 data 中的位按从最高有效位到最低有效位的顺序排列,并且 new_data 的字节按顺序排列打包为大尾数(所有合理的假设),那么这就是你如何做到的:

for (int i = 0; i < k/8; ++i)
{
    new_data[i] = (data[8*i  ] << 7) | (data[8*i+1] << 6)
                | (data[8*i+2] << 5) | (data[8*i+3] << 4)
                | (data[8*i+4] << 3) | (data[8*i+5] << 2)
                | (data[8*i+6] << 1) | data[8*i+7];
}

关于在c中将二进制int转换为二进制uint8_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52793256/

相关文章:

c++ - 如何将整数添加到 LPWSTR

c - 如何在引导加载程序中省略 Bios 参数 block ?

c - strcat 两个字符指针时如何修复段错误

Python:如何先读取一个元素,然后读取两个元素?

binary - 我可以直接用二进制编写程序吗?我怎样才能使计算机执行它?

c - c 中的分数移位

python - "is"运算符对整数的行为异常

c++ - 具有不同比例因子的定点数 4 字节或 8 字节 - 转换数字的库?

c++ - 在 Windows 通用应用程序中使用 curl

c - int 到填充零字符串