c-二进制int*数组到int的等价值



我对C编程很陌生,我想知道在现有的库中是否有一种方法可以在这种特殊情况下帮助我,或者我是否需要编写自己的方法来获得所需的结果。

本质上,我将有一个表示二进制数的int*数组。例如:

|1|0|1|1|

理想情况下,我希望从这个数组中返回11。

C中是否有一个方法接受一个int*数组,并返回存储在其中的数字的int等价值?或者这是我需要写的东西

这是您需要自己编写的内容。由于在现实生活中没有用这种方式表示数字的常见用例,因此C标准库没有处理它的功能

然而,这是一个很好的练习来学习比特移位。阅读<<>>运算符。

不,你必须自己做。带有<lt;操作人员

我的实现

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
uint8_t u8_from_ubits(uint8_t* bits)
{
int i;
uint8_t num = 0;
for(i = 0; i < 8; i++)
num |= bits[7-i] << i; //8-1=7
return num;
}
uint8_t bits[8] = {
0,0,0,0,1,0,1,1
};
int main()
{
printf("%dn",u8_from_ubits(bits));
return 0;
}

对于更多的位数,只需更改功能中的位数

最新更新