ใน .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: ???