วิธีการแปลงอาร์เรย์ไบต์เป็นสตริงใน PowerShell
ในบทช่วยสอน PowerShell นี้ ฉันจะอธิบายวิธีการแปลงอาร์เรย์ไบต์เป็นสตริงใน PowerShell โดยใช้วิธีต่างๆ
หากต้องการแปลงอาร์เรย์ไบต์เป็นสตริงใน PowerShell ให้ใช้คลาส System.Text.Encoding ด้วยเมธอด GetString ตัวอย่างเช่น $string=[System.Text.Encoding]::UTF8.GetString($byteArray) จะแปลง $byteArray เป็นสตริงที่เข้ารหัส UTF-8 ปรับการเข้ารหัสตามความจำเป็นเพื่อให้ตรงกับการเข้ารหัสของอาร์เรย์ไบต์
1. การใช้ System.Text.Encoding
วิธีที่ตรงไปตรงมาที่สุดในการแปลงอาร์เรย์ไบต์เป็นสตริงใน PowerShell คือการใช้คลาส System.Text.Encoding คลาสนี้จัดเตรียมวิธีการเข้ารหัสชุดอักขระให้เป็นลำดับไบต์ และสำหรับการถอดรหัสลำดับไบต์ให้เป็นชุดอักขระ นี่คือวิธีการใช้งาน:
# Create a byte array
$byteArray = [System.Text.Encoding]::UTF8.GetBytes("Hello, World!")
# Convert byte array to string
$string = [System.Text.Encoding]::UTF8.GetString($byteArray)
# Display the string
$stringในตัวอย่างนี้ อันดับแรกเราใช้วิธี GetBytes ของการเข้ารหัส UTF8 เพื่อแปลงสตริงเป็นอาร์เรย์ไบต์ จากนั้น เราใช้วิธี GetString เพื่อแปลงอาร์เรย์ไบต์กลับเป็นสตริง โดยทั่วไปจะใช้การเข้ารหัส UTF-8 เนื่องจากรองรับอักขระ Unicode ทั้งหมด และเข้ากันได้กับ ASCII รุ่นเก่า
คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่างหลังจากที่ฉันรันสคริปต์โดยใช้ VS Code
2. การใช้การเข้ารหัส Base64
อีกวิธีหนึ่งในการแสดงข้อมูลไบนารีเป็นสตริงคือโดยใช้การเข้ารหัส Base64 ใน PowerShell วิธีการนี้มีประโยชน์เมื่อคุณต้องการส่งข้อมูลไบนารีอย่างปลอดภัยผ่านสื่อที่รองรับเฉพาะข้อความเท่านั้น ต่อไปนี้คือวิธีที่คุณสามารถแปลงอาร์เรย์ไบต์เป็นสตริงที่เข้ารหัส Base64:
# Create a byte array
$byteArray = [System.Text.Encoding]::UTF8.GetBytes("Hello, World!")
# Convert byte array to Base64 string
$base64String = [System.Convert]::ToBase64String($byteArray)
# Display the Base64 string
$base64Stringหากต้องการแปลงสตริง Base64 กลับเป็นอาร์เรย์ไบต์ คุณสามารถใช้เมธอด FromBase64String ดังนี้
# Convert Base64 string to byte array
$byteArrayFromBase64 = [System.Convert]::FromBase64String($base64String)
# Convert byte array to string to verify the result
$stringFromBase64 = [System.Text.Encoding]::UTF8.GetString($byteArrayFromBase64)
# Display the string
$stringFromBase64
3. การใช้ StringBuilder และ BitConverter
หากคุณต้องการแปลงอาร์เรย์ไบต์เป็นการแสดงสตริงเลขฐานสิบหก คุณสามารถใช้คลาส BitConverter รวมกับ StringBuilder ได้ นี่คือตัวอย่าง:
# Create a byte array
$byteArray = [System.Text.Encoding]::UTF8.GetBytes("Hello, World!")
# Use BitConverter to get a hexadecimal string
$hexString = [System.BitConverter]::ToString($byteArray)
# Display the hexadecimal string
$hexString
เมธอด ToString ของคลาส BitConverter จะส่งกลับสตริงที่มีค่าเลขฐานสิบหกคั่นด้วยเครื่องหมายขีดกลาง หากต้องการลบเครื่องหมายยัติภังค์ออก คุณสามารถใช้วิธี แทนที่ :
# Remove hyphens from the hexadecimal string
$hexString = $hexString.Replace("-", "")
# Display the cleaned-up hexadecimal string
$hexStringเมื่อแปลงไบต์อาร์เรย์เป็นสตริง จำเป็นอย่างยิ่งที่จะต้องเข้าใจแนวคิดของการเข้ารหัส การเข้ารหัสเป็นกระบวนการแปลงชุดอักขระ Unicode ให้เป็นลำดับไบต์ การถอดรหัสเป็นกระบวนการย้อนกลับ โดยแปลงลำดับไบต์กลับเป็นชุดอักขระ ตัวเลือกการเข้ารหัส (เช่น UTF-8, ASCII, Unicode) ส่งผลต่อวิธีการตีความไบต์ และต้องสอดคล้องกันระหว่างการเข้ารหัสและถอดรหัสเพื่อหลีกเลี่ยงความเสียหายของข้อมูล
บทสรุป
PowerShell มอบวิธีการที่ยืดหยุ่นสำหรับการแปลงอาร์เรย์ไบต์เป็นสตริง ไม่ว่าคุณจะต้องการการแสดงข้อความธรรมดา สตริงที่เข้ารหัส Base64 หรือสตริงเลขฐานสิบหก
ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีแปลงอาร์เรย์ไบต์เป็นสตริงใน PowerShell
