ค้นหาเว็บไซต์

วิธีการแปลงอาร์เรย์ไบต์เป็นสตริงใน 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

บทความที่เกี่ยวข้อง