Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Chuyển Byte Array sang String trong C#

Trong .Net, mọi string có character set và encoding. Character encoding cho máy tính cách diễn giải raw zeros và ones thành real characters. Thường làm bằng cách pair numbers với characters. Thực tế là quá trình transform tập Unicode characters thành sequence của bytes.

Dùng Encoding.GetString Method (Byte[]) để decode tất cả bytes trong byte array chỉ định thành string. Có nhiều decoding schemes khác trong Encoding class: UTF8, Unicode, UTF32, ASCII, v.v. Encoding class nằm trong namespace System.Text.

string result = Encoding.Default.GetString(byteArray);

Ví dụ

using System;
using System.Text;

namespace DemoApplication
{
    public class Program
    {
        static void Main(string[] args)
        {
            byte[] byteArray = Encoding.Default.GetBytes("Hello World");
            Console.WriteLine($"Byte Array: {string.Join(" ", byteArray)}");
            string str = Encoding.Default.GetString(byteArray);
            Console.WriteLine($"String: {str}");
            Console.ReadLine();
        }
    }
}

Kết quả

Byte Array: 72 101 108 108 111 32 87 111 114 108 100
String: Hello World

Quan trọng: phải dùng cùng encoding cho cả hai chiều. Ví dụ: byte array encoded với ASCII mà get string dùng UTF32 sẽ không ra string mong muốn.

Ví dụ encoding mismatch

using System;
using System.Text;

namespace DemoApplication
{
    public class Program
    {
        static void Main(string[] args)
        {
            byte[] byteArray = Encoding.ASCII.GetBytes("Hello World");
            Console.WriteLine($"Byte Array: {string.Join(" ", byteArray)}");
            string str = Encoding.UTF32.GetString(byteArray);
            Console.WriteLine($"String: {str}");
            Console.ReadLine();
        }
    }
}

Kết quả

Byte Array: 72 101 108 108 111 32 87 111 114 108 100
String: ???