二进制int *数组到int等效项

时间:2018-12-09 00:27:10

标签: c arrays

我对C编程非常陌生,并且想知道预先存在的库中是否有一种方法可以在这种特殊情况下为我提供帮助,或者我是否需要编写自己的方法才能获得所需的结果。

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

|1|0|1|1|

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

C中是否有采用int *数组并返回与其存储的数字相等的int的方法?还是我需要写些东西

3 个答案:

答案 0 :(得分:0)

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

但是,这是学习位移的好方法。 阅读<<>>运算符。

答案 1 :(得分:0)

不,您必须自己做。使用<<运算符。

答案 2 :(得分:0)

我的实现

#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("%d\n",u8_from_ubits(bits));
    return 0;
}

要获取更多位数,只需更改功能中的位数