Computer >> Máy Tính >  >> Lập trình >> C#

Làm thế nào để chuyển đổi mảng byte thành chuỗi trong C #?

Trong .Net, mọi chuỗi đều có một bộ ký tự và mã hóa. Mã hóa ký tự cho máy tính biết cách diễn giải các số 0 thô và các số 0 thành các ký tự thực. Nó thường thực hiện điều này bằng cách ghép nối các số với các ký tự. Trên thực tế, đó là quá trình chuyển đổi một tập hợp các ký tự Unicode thành một chuỗi các byte.

Chúng ta có thể sử dụng Phương pháp Encoding.GetString (Byte []) để giải mã tất cả các byte trong mảng byte được chỉ định thành một chuỗi. Một số lược đồ giải mã khác cũng có sẵn trong lớp Mã hóa như UTF8, Unicode, UTF32, ASCII, v.v. Lớp Mã hóa có sẵn như một phần của không gian tên 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 is: {string.Join(" ", byteArray)}");
         string str = Encoding.Default.GetString(byteArray);
         Console.WriteLine($"String is: {str}");
         Console.ReadLine();
      }
   }
}

Đầu ra

Đầu ra của đoạn mã trên là

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

Điều quan trọng cần lưu ý là chúng ta nên sử dụng cùng một bảng mã cho cả hai hướng. Ví dụ:nếu mảng byte được mã hóa bằng ASCII và chúng tôi đang cố gắng lấy chuỗi bằng UTF32, chúng tôi sẽ không nhận được chuỗi mong muốn.

Ví dụ

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 is: {string.Join(" ", byteArray)}");
         string str = Encoding.UTF32.GetString(byteArray);
         Console.WriteLine($"String is: {str}");
         Console.ReadLine();
      }
   }
}

Đầu ra

Đầu ra của đoạn mã trên là

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