[go] encoding/binary 패키지를 사용하여 데이터를 압축하는 방법

이 블로그 포스트에서는 Go 프로그래밍 언어의 encoding/binary 패키지를 사용하여 데이터를 바이너리로 압축하는 방법에 대해 알아보겠습니다.

1. encoding/binary 패키지란?

Go 언어의 encoding/binary 패키지는 데이터를 바이너리로 인코딩하고 디코딩하는 데 사용됩니다. 이를 통해 데이터를 빅 엔디안(big-endian) 또는 리틀 엔디안(little-endian) 형식으로 인코딩할 수 있습니다.

2. 바이너리 데이터로의 인코딩

다음은 encoding/binary 패키지를 사용하여 데이터를 바이너리로 인코딩하는 간단한 예제 코드입니다.

package main

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

func main() {
	var buf bytes.Buffer
	data := uint16(42)

	err := binary.Write(&buf, binary.LittleEndian, data)
	if err != nil {
		fmt.Println("binary write failed:", err)
		return
	}

	fmt.Printf("%x\n", buf.Bytes())
}

위 코드는 16비트의 부호 없는 정수를 리틀 엔디안 형식으로 바이너리로 인코딩하는 예제입니다.

3. 바이너리 데이터로의 디코딩

이제 encoding/binary 패키지를 사용하여 바이너리 데이터를 디코딩하는 예제 코드를 살펴보겠습니다.

package main

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

func main() {
	data := []byte{0x2a, 0x00}

	var value uint16
	buf := bytes.NewReader(data)

	err := binary.Read(buf, binary.LittleEndian, &value)
	if err != nil {
		fmt.Println("binary read failed:", err)
		return
	}

	fmt.Println(value) // 42
}

위 코드는 리틀 엔디안 형식으로 인코딩된 16비트 부호 없는 정수를 디코딩하는 예제입니다.

encoding/binary 패키지를 사용하여 데이터를 바이너리로 압축하는 방법에 대해 간단히 살펴보았습니다. 이를 통해 데이터를 효율적으로 저장하고 전송할 수 있습니다.

더 자세한 내용은 공식 문서를 참조하세요.