1
public static int getIntegerFromBitArray(BitArray bitArray)
{
  var result = new int[1];
  bitArray.CopyTo(result, 0);
  return result[0];
}

// Input  A) 01110
// Output A) 14
// Input  B) 0011
// Output B) 12 <=== ????? WHY!!! :)

2番目の戻り値が3ではなく12である理由を誰か説明してもらえますか?? お願いします... ありがとうございます。

4

2 に答える 2

10

基本的に、予想とは逆の順序でビットを考慮します。入力バイナリをにマッピングする方法を示していませんBitArrayが、結果は0011ではなく1100として扱われます。

確かに、ドキュメントは明確ではありませんが、期待どおりに機能します。バイナリについて説明するときと同じように、最下位bitArray[0]の値を表します(つまり、ビット0は0/1、ビット1は0/です)。 2、ビット2は0/4、ビット3は0/8など)。例えば:

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        BitArray bits = new BitArray(8);
        bits[0] = false;
        bits[1] = true;

        int[] array = new int[1];
        bits.CopyTo(array, 0);
        Console.WriteLine(array[0]); // Prints 2
    }
}
于 2012-03-14T07:37:24.583 に答える
1

正しい結果を得るには、ビットを正しい方向に回転させる必要があります。1100 は 12

于 2012-03-14T07:40:25.150 に答える