2017-12-09 2 views
0

バイナリ文字列とInt32配列を持っています。LS32を使用して文字列をint32に変換するC#

int配列のバイナリ文字列(各11ビットの文字列)をInt32値(11 LSB)に変換するにはどうすればよいですか?

for (int i = 0; i <(string.Length); i++) { 
    if (count1 >= string.Length - 21) 
     break; 
    else 
     string = string.Insert(count1, "000000000000000000000"); 
     count1 += 31; 
} 
int numOfBytes = string.Length/32; 
int[] ints = new int[numOfBytes]; 
for (int i = 0; i < numOfBytes; ++i) { 
    ints[i] = Convert.ToInt32(string.Substring(32 * i, 32), 2); 
} 

が、それは偽の値

+0

まあ、何か試してみましたか? –

+0

'Convert.ToInt32'を試しましたか?この関数の詳細については、https://msdn.microsoft.com/en-us/library/1k20k614(v=vs.110).aspx) – lamandy

+0

はい、これを試しました(int i = 0 ; i <(string.Length); i ++) { if(count1> = cstring.Length - 21)break; else string = cipher_reverse_diff_string.Insert(count1、 "000000000000000000000"); count1 + = 31; } int numOfBytes = string.Length/32; int [] ints =新しいint [numOfBytes]; (int i = 0; i MSc

答えて

0
Int32[] BinaryStringToInt32Array(const string binaryString, const int bitCount) 
{ 
    Int32[] results = new Int32[binaryString.Length/bitCount]; 
    for (int i = 0; i < results.Length; i++) 
    { 
     string str = binaryString.Substring(i * bitCount, bitCount); 
     results[i] = Convert.ToInt32(str, 2); 
    } 

    return results; 

} 

を返しbinaryStringの長さはBITCOUNTの倍数でない場合は、すべての残りのビットを無視します。この機能に注意してください:

は、私はこれを試してみました。あなたの場合、bitCountは11です。

+0

それは働いた!すばらしいです !ありがとうございました:)私は受け入れられた答えとしてそれを作ってくれます、あなたは私のためのメモを説明してもらえますか? – MSc

+0

本質的に、文字列から11文字ごとに取り出し、 'Convert.ToInt32'に渡してInt32値を取得します。 2番目のパラメータはそれが基数2であることを示すことです。 – lamandy

+0

説明をありがとう、しかし、私はこのノート "注意してください。この関数は、binaryStringの長さがbitCountの倍数でない場合、すべての残ったビットを無視します。 – MSc

関連する問題