Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วิธีการแปลงไบต์อาร์เรย์เป็นสตริงใน C #?


ใน .Net ทุกสตริงมีชุดอักขระและการเข้ารหัส การเข้ารหัสอักขระจะบอกคอมพิวเตอร์ถึงวิธีตีความเลขศูนย์ดิบและเลขศูนย์ให้เป็นอักขระจริง โดยปกติจะทำโดยการจับคู่ตัวเลขกับอักขระ อันที่จริงมันคือกระบวนการแปลงชุดอักขระ Unicode เป็นลำดับไบต์

เราสามารถใช้ Encoding.GetString Method (Byte[]) เพื่อถอดรหัสไบต์ทั้งหมดในอาร์เรย์ไบต์ที่ระบุเป็นสตริง นอกจากนี้ยังมีรูปแบบการถอดรหัสอื่นๆ อีกหลายแบบในคลาสการเข้ารหัส เช่น UTF8, Unicode, UTF32, ASCII เป็นต้น คลาสการเข้ารหัสมีให้โดยเป็นส่วนหนึ่งของเนมสเปซ System.Text

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

ตัวอย่าง

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

ผลลัพธ์

ผลลัพธ์ของโค้ดด้านบนคือ

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

เป็นสิ่งสำคัญที่จะต้องทราบว่าเราควรใช้การเข้ารหัสเดียวกันสำหรับทั้งสองทิศทาง ตัวอย่างเช่น หากอาร์เรย์ไบต์เข้ารหัสด้วย ASCII และเรากำลังพยายามรับสตริงโดยใช้ UTF32 เราจะไม่ได้รับสตริงที่ต้องการ

ตัวอย่าง

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

ผลลัพธ์

ผลลัพธ์ของโค้ดด้านบนคือ

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