我有一个类似“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

10-01 17:04
查看更多