0

C : ビットを使用して整数に変換

0、1 のビット配列から整数値を取得する必要があります。

整数配列を渡し、ビット演算子を使用して 10 進数を取得したい。

以下は私が試したものですが、int 配列を渡そうとしたときに機能しません。 char* arrayで機能します。int 配列を渡して 10 進数に変換する方法はありますか? ビット演算子を使いたい

 int toInt(int* bin_arr) {

  int val = 0;
  while (*bin_arr)
   val = (val << 1) | (*bin_arr++ == '1');
  return val;
 }

前もって感謝します。

4

1 に答える 1

0

ループ条件は、配列が 0 で終了していることを前提としています。これは文字列には有効ですが、整数配列には有効ではありません。これを修正する 1 つの方法は、int ポインターと共に長さパラメーターを渡すことです。これにより、反復をいつ停止するかがわかります。

また、この表現では:

(*bin_arr++ == '1')

文字ではなく整数を渡す場合は、一重引用符を削除する必要があります。

于 2013-10-04T23:23:44.757 に答える