我对C编程很陌生,我想知道在预先存在的库中是否有一种方法可以帮助我解决这种特殊情况,或者我是否需要编写自己的方法来实现所需的结果 .
基本上,我将有一个表示二进制数的int *数组 . 例如:
|1|0|1|1|
理想情况下,我希望从这个数组返回11 .
C中是否有一个方法接受一个int *数组并返回存储在其中的数字的int等价物?或者这是我需要写的东西
不,你必须自己做 . 用<<运算符 .
这是你需要自己写的东西 . 由于没有以这种方式表示数字的常见现实用例,因此C标准库没有处理它的功能 .
然而,这是学习位移的一个很好的练习 . 阅读 << 和 >> 运算符 .
<<
>>
我的实施
#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; }
要获得更多位数,只需在功能中更改位数
3 回答
不,你必须自己做 . 用<<运算符 .
这是你需要自己写的东西 . 由于没有以这种方式表示数字的常见现实用例,因此C标准库没有处理它的功能 .
然而,这是学习位移的一个很好的练习 . 阅读
<<
和>>
运算符 .我的实施
要获得更多位数,只需在功能中更改位数