2

指定されたバイナリ入力(1101など)を10進数に変換する必要がありますが、入力は文字列配列または整数ではありません(渡された引数はconst char *binstr)。2進数の個々の桁にアクセスして、それぞれに対してpow(x、y)を実行し、それらを合計して10進数を取得するにはどうすればよいですか?

4

4 に答える 4

0
binstr[0];
binstr[1];
binstr[2];

またはあなたはポインタを通してそれを行うことができます

char* s = binstr;
unsigned long x =0;
while(*s) { x = x << 1; x |= (*s == '1' ? 1:0); s++;} 
printf("the decimal of %s is %ul", binstr, x);
于 2013-02-21T00:20:47.580 に答える
0

const char *通常、C文字列を指します。あなたはただ使うことができますstrtol(3)

int x = strtol(binstr, NULL, 2);
于 2013-02-21T00:22:35.103 に答える
0

BinaryからDecimalに変換するこのプログラムを試すことができます

char *binstr = "1011011";
int   num = 0, sum = 0, ctr = 0;

ctr = strlen(binstr) - 1;
do{
    sum += ((binstr[ctr] & 0x1) << num);
    ctr--;
    num ++;
}while(ctr >= 0);
于 2013-02-21T00:33:10.030 に答える
0

を作成し、c string配列と同様の方法で各文字を取得できます。

input[i]

バイナリ文字列を個々のビット (文字) に分割して出力する例を次に示します: http://cfiddle.net/wYtKJv

ループを使用できます:

while(i<100){

if(binstr[i]== '\0'){
   break;
}

printf("First Bit:\n%c\n\n",binstr[i]);
i++;
}

'\0'C 文字列は null で終了するため、ヒットした文字breakがループにあるかどうかを確認できます。

ループでは、 を変換しcharsints、計算のためにアクセスできる場所 (おそらく配列) に保存することもできます。

于 2013-02-21T00:27:28.457 に答える