我有一个类似“10100010”的字符串,它等于162十进制或0xA2十六进制。我需要找到一种用C计算这些值之一的方法,或者用C:0b(字符串)-0b10100010获得这个值的方法
我试图通过这样做将每个位(char)转换为int:String[0]-'0',并使用一个循环手动计算二进制数的值,类似于这样,但它没有起作用。。
for (i=0,n=n_c; i<n_c; i++,n--)
{
decimal_value=decimal_value+ pow( (val[i]-'0') , (n-1) );
printf("%d ", pow( (int) ((val[i]-'0')) , (n-1)));
}
在这种特殊情况下,n_c=6(6位)。如果字符串大于8位,我还有另一个问题,但现在让我们关注这个“简单”的情况。
你能帮我吗?
最佳答案
有一个bin到dec的例子:
#include <stdlib.h>
#include <stdio.h>
int main(){
char a[] = "100";
char b[] = "100";
char c[] = "0x11";
int x, y, z;
x = strtol( a, NULL, 10 );
y = strtol( b, NULL, 2 );
z = strtol( c, NULL, 16 );
printf( "x = %d\n", x );
printf( "y = %d\n", y );
printf( "z = %d\n", z );
}
输出:x=100;y=4;z=17