2013-07-24 10 views
5

Bayt dizisini bir dizeye dönüştürmenin kolay bir yolu var mı, bu nedenle aşağıdaki birim sınaması geçer? Tüm değerler için çalışan bir kodlama bulamıyorum.Bayt dizisini C dizgisine dönüştürme C#

[TestMethod] 
    public void TestBytToString() 
    { 
    byte[] bytArray = new byte[256]; 
    for (int i = 0; i < bytArray.Length; i++) 
    { 
     bytArray[i] = (byte)i; 
    } 
    string x = System.Text.Encoding.Default.GetString(bytArray); 
    for (int i = 0; i < x.Length; i++) 
    { 
     int y = (int)x[i]; 
     Assert.AreEqual(i, y); 
    } 
    } 
+0

'Array.ConvertAll' bir' kömürü oluşturmak için çalışması gerektiğini Bir dizgecik yapıcısına iletebileceğiniz [] '. –

+0

"Neden bunu yapıyorsun?" Soru, bu işlemi sadece kodlayan ASCII olarak geçerli olacağını düşünüyorum, bence. , <128> Fiili: – JerKimball

+0

Ascii Beklenen başarısız Ben kodunuzu var ve aşağıdaki ile test <63> – user2227596

cevap

0

Bu çalıştı:

[TestMethod] 
    public void TestBytToString() 
    { 
    byte[] bytArray = new byte[256]; 
    ushort[] usArray = new ushort[256]; 
    for (int i = 0; i < bytArray.Length; i++) 
    { 
     bytArray[i] = (byte)i; 

    } 

    string x = System.Text.Encoding.Default.GetString(bytArray); 
    for (int i = 0; i < x.Length; i++) 
    { 
     int y = System.Text.Encoding.Default.GetBytes(x.Substring(i, 1))[0]; 
     Assert.AreEqual(i, y); 
    } 
    } 
1

System.Text.Encoding.UTF8 sizin için bir numara yapmalıdır.

+0

UTF8'de değilse? –

+0

Peki, kodlama nedir? Eğer bir ASCII ise, hala gerekli boyuta küçülen ünlü UTF8 marjlarında. – Tigran

+0

UTF8 kullandığımda, Beklenen: <128>, Gerçek: <65533> başarısız. – user2227596

1
string x = Encoding.UTF8.GetString(bytArray, 0, bytArray.Length); 
+0

Yukarıdakileri kullandığımda, Beklenen: <128>, Gerçek: <65533> başarısız. – user2227596

1
var str = System.Text.Encoding.Default.GetString(bytArray); 
+0

Yukarıdakileri kullandığımda, şu an başarısız oldu: <128>, Güncel: <8364> – user2227596

0

Bildiğim kadarıyla ben byte değeri 127 Yukarıdaki everthing negatif bir sayı olarak kabul edilir ve Char sadece pozitif değerler alabilir gibi Çektiğiniz her kodlamada bilinmeyen bir karakter ile sonuçlanır bildiği gibi.

Dizeye daha sonra imzasız kısa (USHORT) bayt dizisi dönüştürmek ve isteyebilirler ...