[go] encoding/binary 패키지를 사용하여 구조체를 바이너리로 인코딩하는 방법

Go 언어에서는 encoding/binary 패키지를 사용하여 구조체를 바이너리 데이터로 인코딩할 수 있습니다. 이를 통해 데이터를 효율적으로 저장하고 전송할 수 있습니다.

구조체 정의

먼저, 바이너리로 인코딩할 구조체를 정의합니다. 아래는 예시 구조체입니다.

type Data struct {
    ID   uint32
    Name [20]byte
}

인코딩

이제 encoding/binary 패키지의 Write 함수를 사용하여 구조체를 바이너리로 인코딩합니다.

import (
    "bytes"
    "encoding/binary"
    "fmt"
)

func main() {
    data := Data{ID: 100, Name: [20]byte{'J', 'o', 'h', 'n'}}
    
    buf := new(bytes.Buffer)
    err := binary.Write(buf, binary.LittleEndian, data)
    if err != nil {
        fmt.Println("binary write error:", err)
        return
    }
    
    binaryData := buf.Bytes()
    fmt.Printf("%x\n", binaryData)
}

위 예제에서는 구조체를 LittleEndian으로 인코딩하여 이진 데이터를 생성했습니다.

위 코드를 실행하면 구조체가 이진 형식으로 인코딩된 결과를 확인할 수 있습니다.

결론

Go 언어의 encoding/binary 패키지를 사용하면 구조체를 바이너리 데이터로 쉽게 인코딩할 수 있습니다. 이를 통해 효율적인 데이터 처리 및 전송이 가능해집니다.


참고 문헌: