指定されたバイナリ入力(1101など)を10進数に変換する必要がありますが、入力は文字列配列または整数ではありません(渡された引数はconst char *binstr
)。2進数の個々の桁にアクセスして、それぞれに対してpow(x、y)を実行し、それらを合計して10進数を取得するにはどうすればよいですか?
2267 次
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
がループにあるかどうかを確認できます。
ループでは、 を変換しchars
てints
、計算のためにアクセスできる場所 (おそらく配列) に保存することもできます。
于 2013-02-21T00:27:28.457 に答える