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