2009-03-17 18 views
6

Aşağıdaki "Mavi Kutu" dizesini alsaydım, C# dizgesini oluşturan bitleri nasıl alabilirim ve ne tür bir veriyi depolardım?C# içindeki bir dizeden bitleri nasıl alabilirim?

Sadece "o" harfini kullanırsam 111'i bayt ve 111'i bit olarak elde edin. 0'ları keser mi ve eğer "oo" yaparsam, bayt dizisinde her bir tane için 111 alırım, ama bitler için 28527 değerini alırım. Neden?

+2

Bu makaleyi oku kullanır!) http://www.joelonsoftware.com/articles/Unicode.html – mmcdole

cevap

14

, bu fonksiyonu kullanabilirsiniz olsun: hayır exc (Mutlak Asgari Her Yazılım Geliştirici Unicode ve Karakter Kodlamalarının hakkında bilmek olmalı:

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

Bu, "bitler" ile ne kastettiğinize bağlı olarak değişir. ASCII temsilinden mi bahsediyorsunuz? UTF8? UTF16? System.Text.Encoding ad alanı başlatılmalı.

+0

ASCII beni sınırlandırırdı. – Xaisoft

+0

Tüm metniniz düz İngilizce olacak değilse değil. –

14

Sen yapabileceğini aşağıdaki: Eğer "Mavi Kutu" örneğini size kullanırsanız

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(); 
} 

: Bir dize biçiminde bit istiyorsanız

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

BitArray hangi ad alanı tutar? – Xaisoft

+1

System.Collections –

+0

+1 - BitArray bunu gerçekleştiremedi. –

İlgili konular