[go] go 언어에서의 encoding/hex 패키지와 문자열 처리
Go 언어는 효율적이고 강력한 표준 라이브러리로 유명합니다. 특히 문자열과 바이트 슬라이스를 다루는데 있어서 매우 다양하고 유용한 기능을 제공합니다. 이번에는 Go 언어에서 문자열 처리와 인코딩을 다루는 두 가지 패키지인 encoding
과 hex
에 대해 알아보겠습니다.
encoding 패키지
encoding
패키지는 데이터를 다른 형식으로 인코딩하고 디코딩하기 위한 기능을 제공합니다. 예를 들어, JSON, XML, CSV 등과 같은 데이터 형식으로의 인코딩 및 디코딩을 수행할 수 있습니다. 또한 base64, binary, hexadecimal 등과 같은 바이트 스트림의 인코딩 및 디코딩을 할 수 있습니다.
아래는 encoding
패키지를 이용하여 JSON 인코딩과 디코딩을 하는 간단한 예제 코드입니다.
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// JSON 데이터를 인코딩
person := Person{Name: "John", Age: 30}
jsonData, err := json.Marshal(person)
if err != nil {
panic(err)
}
fmt.Println(string(jsonData)) // {"name":"John","age":30}
// JSON 데이터를 디코딩
var newPerson Person
err = json.Unmarshal(jsonData, &newPerson)
if err != nil {
panic(err)
}
fmt.Println(newPerson) // {John 30}
}
hex 패키지
hex
패키지는 바이트 스트림을 16진수로 인코딩하거나 16진수를 바이트 스트림으로 디코딩하기 위한 기능을 제공합니다. 예를 들어, 바이너리 데이터를 읽을 때 16진수 형태로 출력하거나 16진수 형태의 문자열을 다시 바이트 스트림으로 변환할 수 있습니다.
아래는 hex
패키지를 이용하여 16진수 인코딩과 디코딩을 하는 간단한 예제 코드입니다.
import (
"encoding/hex"
"fmt"
)
func main() {
// 바이트 스트림을 16진수로 인코딩
data := []byte{0x48, 0x65, 0x6c, 0x6c, 0x6f}
hexData := make([]byte, hex.EncodedLen(len(data)))
hex.Encode(hexData, data)
fmt.Println(string(hexData)) // 48656c6c6f
// 16진수를 바이트 스트림으로 디코딩
decodedData := make([]byte, hex.DecodedLen(len(hexData)))
_, err := hex.Decode(decodedData, hexData)
if err != nil {
panic(err)
}
fmt.Println(decodedData) // [72 101 108 108 111]
}
마치며
Go 언어의 encoding
패키지와 hex
패키지는 데이터를 다양한 형식으로 변환하고 처리하는 강력한 도구입니다. 이러한 기능을 활용하여 웹 애플리케이션, 시스템 프로그래밍, 네트워크 프로그래밍 등 다양한 분야에서 유용하게 활용할 수 있습니다.
더 많은 정보는 공식 Go 언어 문서에서 확인할 수 있습니다.