3

だから私はC#が初めてで、検索しましたが、何を探しているのかわかりません。

ModBus インターフェイス ライブラリから 32 個の true/false ビットを保存した、inputs というブール変数があります。

これは、私の 32 個の true/false 値を説明する画像です。基本的に、入力に格納されている 32 個の true/false 値。それらを単一の 32 ビット整数に照合する必要があります。

私が知りたいのは、これらの 32 の値を単一の 32 ビット文字列 (0000 0000 0000 1000 1000 1000 1000 1000) に照合する方法です。これは明らかに 32 ビット整数であり、88888 の 10 進数が得られます。

そして、どのコマンドを使用すべきかわからないため、今は立ち往生しています。

4

4 に答える 4

0

より理解を深めたい場合は (James が正しいようです)、これを見てください (Linqpad にコピーして貼り付けることができます。それ以外の場合は、Dump()呼び出しを削除して を使用しますToString())。

// Initialize variables
bool[] ba = new bool[24];
Random r = new Random();
StringBuilder sb = new StringBuilder();
Int32 i32 =0;

// Initialize array
for (int i = 0; i < ba.Length; i++)
{
    var d = r.Next(0,10);
    ba[i] = (d < 5) ? true : false;
}

// Dump to string: 
for (int i = 0; i < ba.Length; i++)
{
    sb.Append( ba[i] ? 1 : 0);
}

// Build your int
for (int i = 0; i < ba.Length; i++)
{
    // Shift left
    i32 = i32 << 1;
    // Add your current value
    i32+= ba[i] ? 1 : 0;
}

// Outputs
ba.Dump("array output");
sb.ToString().Dump("as a string");
i32.Dump("as an int");

次も役立つはずです: << 演算子 (C# リファレンス)、またはこの質問.

于 2016-01-30T00:53:29.490 に答える
0

ビット単位の文字列値を取得したら、次を使用してその文字列を変換するだけです

  int output = Convert.ToInt32(input, 2);

こちらで回答済みです。

バイナリ文字列を整数に変換する

于 2016-01-30T00:55:01.760 に答える
0

これがあなたの望むものだと思います。booleansがブール配列になる場合ints、同じであるため、ブール配列の長さで初期化 (する必要があります) されます。iforeach ループで使用する単なるカウンターです。次に、1 つの bool 値をインクリメントiして配列から整数に変換し、int 配列に保存します。最後の行はすべての整数を結合します。この例では、True = 1 および False = 0 であることがわかっているため、TTF がありints = 1, 0, 1, 0int result = 1010

                bool[] booleans = { true, false, true, false }; // Your bool array
                int[] ints = new int[booleans.Length];  // Integer equivalent of "booleans"
                int i = -1; // Counter for "foreach" loop
                foreach (bool boo in booleans)
                {
                    i++;
                    ints[i] = Convert.ToInt32(boo); // Convert boolean into binary
                }
                int result = Convert.ToInt32(string.Join("", ints)); // Concatenate them

短い C# コースを受講することをお勧めします。とにかく、もっと多くのことを学べます。整数配列が必要な場合は、最後の行を削除してください。次回は、投稿に詳細情報を含めてください。

于 2016-01-30T00:58:44.933 に答える