1

私は手に入れたい

int sign[8]= {0,1,0,1,0,1,1,1};        

のような strtol 関数で使用するには

char c = (char) strtol(sign, NULL, 2);
printf("%c\n", c);

ストロールで使用する記号をキャストする方法がわかりません。私が使用しているとき

 c = (char) strtol("01010111", NULL, 2);

すべてが順調で、そのような結果を得たいと思っています。

助けてください :)

4

2 に答える 2

2

問題はsign、文字列ではなく、小さな整数の配列であることです。

それらをビットとして直接解釈し、配列を数値に変換できます。経由しても意味がありませんstrtol()(実際、Cではあなたのやり方でそれを行うのはかなり慣用的ではありません)。

ループするだけです:

unsigned int array_to_int(const int *bits, size_t num_bits)
{
  unsigned int ret = 0, value = 1;
  for(; num_bits > 0; --num_bits, value *= 2)
    ret += value * bits[num_bits - 1];
  return ret;
}
于 2015-01-09T14:36:58.633 に答える