DEV Community

Weerasak Chongnguluam
Weerasak Chongnguluam

Posted on

Encode / Decode Hexadecimal string to/from binary data

#go

ช่วงนี้ต้องจัดการข้อมูลที่เป็น binary ซึ่งบางครั้งข้อมูลอยู่ในรูปแบบ BCD ซึ่งถ้าให้เขียนเป็นเลขฐานสองโดยตรงก็จะยาว และยากต่อการอ่านเวลา debug เกินไป ดังนั้นก็เลยแปลงให้อยู่ในเลขฐานสิบหกดีกว่าเวลาต้อง debug หรือ log ข้อมูล

สำหรับ Go มี package encoding/hex ที่มีฟังก์ชันให้เราใช้แปลงไปมาระหว่าง binary data ([]byte) ไปเป็น hexadecimal string ได้ง่ายๆอยู่ คือฟังก์ชัน

func EncodeToString(src []byte) string func DecodeString(s string) ([]byte, error) 
Enter fullscreen mode Exit fullscreen mode

ตัวอย่างการใช้งานเช่น เมื่อเราต้องการแปลงจาก Hex ที่เป็น string กลับไปเป็น binary data

package main import ( "encoding/hex" "fmt" "log" ) func main() { bcdNumberHex := "1234" bcdNumberBytes, err := hex.DecodeString(bcdNumberHex) if err != nil { log.Fatal(err) } for _, b := range bcdNumberBytes { fmt.Printf("0x%x ", b) } // Output: // 0x12 0x34 } 
Enter fullscreen mode Exit fullscreen mode

ตัวอย่างการใช้งานเช่น เมื่อเราต้องการแปลงจาก binary data กลับไปเป็น Hex string

package main import ( "encoding/hex" "fmt" ) func main() { bcdNumberBytes := []byte{0x12, 0x34} bcdNumberHex := hex.EncodeToString(bcdNumberBytes) fmt.Println(bcdNumberHex) // Output: // 1234 } 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)