2013-07-24 59 views
5

Có cách nào dễ dàng chuyển đổi một mảng byte thành chuỗi để kiểm tra đơn vị sau đi qua không? Tôi không thể tìm thấy mã hóa hoạt động cho tất cả các giá trị.Chuyển mảng byte thành chuỗi trong 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' nên làm việc cho tạo phương thức 'char [] ', mà bạn có thể truyền cho một hàm tạo chuỗi. –

+0

Tránh "tại sao bạn sẽ làm điều này?" câu hỏi, mã hóa duy nhất hoạt động này sẽ hợp lệ trong sẽ là ASCII, tôi nghĩ vậy. – JerKimball

+0

Ascii thất bại dự kiến: <128>, thực tế: <63> – user2227596

Trả lời

0

này làm việc:

[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 nên thực hiện một thủ thuật cho bạn.

+0

Điều gì xảy ra nếu nó không có trong UTF8? –

+0

Vậy mã hóa là gì? Nếu đó là một ASCII, nó vẫn nằm trong lề của UTF8, nổi tiếng với việc thu nhỏ lại kích thước cần thiết. – Tigran

+0

Khi tôi sử dụng UTF8, nó không thành công với dự kiến: <128>, Thực tế: <65533>. – user2227596

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

Khi tôi sử dụng ở trên không thành công với Dự kiến: <128>, Thực tế: <65533>. – user2227596

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

Khi tôi sử dụng ở trên, nó không thành công Dự kiến: <128>, Thực tế: <8364> – user2227596

0

Theo như tôi biết everthing trên giá trị 127 trong byte được coi là một số âm và như char chỉ có thể lấy các giá trị tích cực nó kết quả với một char chưa biết trong mỗi mã hóa bạn chụp.

Bạn có thể muốn chuyển đổi mảng byte để unsigned ngắn (ushort) và sau đó đến chuỗi ...

Các vấn đề liên quan