2009-03-17 6 views
6

次の文字列 "Blue Box"を持っていれば、C#で文字列を構成するビットをどのように取得できますか。どのデータ型を格納しますか?C#で文字列からビットを得る方法はありますか?

文字 "o"バイトとして111を、ビットとして111を得る。 0を切り落としているのですか? "oo"を実行すると、バイト配列の各oに対して111が得られますが、ビットについては28527という値が得られます。なぜですか?

+2

この記事を読む:すべてのソフトウェア開発者がUnicodeと文字エンコーディングについて知っておくべき絶対最小使用してください!)http://www.joelonsoftware.com/articles/Unicode.html – mmcdole

答えて

14

あなたは文字列形式でビットをしたい場合は、この機能を使用することができますあなたがあなたの「ブルーボックス」の例を使用している場合

public string GetBits(string input) 
{ 
    StringBuilder sb = new StringBuilder(); 
    foreach (byte b in Encoding.Unicode.GetBytes(input)) 
    { 
     sb.Append(Convert.ToString(b, 2)); 
    } 
    return sb.ToString(); 
} 

をget:

string bitString = GetBits("Blue Box"); 
// bitString == "100001001101100011101010110010101000000100001001101111011110000" 
5

「ビット」の意味によります。あなたはASCII表現について話していますか? UTF8? UTF16? System.Text.Encoding名前空間を開始する必要があります。

+0

ASCIIは私の権利を制限するでしょう。 – Xaisoft

+0

あなたのテキストのすべてが平易な英語になる場合はありません。 –

14

次の操作を行うことができます:

byte[] bytes = System.Text.UTF8Encoding.Default.GetBytes("Blue Box"); 
BitArray bits = new System.Collections.BitArray(bytes); 
+1

BitArrayを保持するどの名前空間ですか? – Xaisoft

+1

System.Collections –

+0

+1 - BitArrayはこれを実現できませんでした。 –

関連する問題