[go] 바이너리 데이터를 특정 형식으로 변환하는 방법

1. 바이너리 데이터 읽기

package main

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

func main() {
	data := []byte{0x48, 0x65, 0x6C, 0x6C, 0x6F} // 예시 바이너리 데이터
	var num uint32

	reader := bytes.NewReader(data)
	err := binary.Read(reader, binary.BigEndian, &num)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("%d\n", num) // 출력: 1214606446
}

위의 예제에서는 binary.Read를 사용하여 바이너리 데이터를 읽고 BigEndian으로 변환한 뒤 출력하는 것을 볼 수 있습니다.

2. 바이너리 데이터 쓰기

package main

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

func main() {
	var buffer bytes.Buffer
	num := uint32(0x48656C6C6F) // 예시 값

	err := binary.Write(&buffer, binary.BigEndian, num)
	if err != nil {
		fmt.Println("binary.Write failed:", err)
	}

	fmt.Printf("% x\n", buffer.Bytes()) // 출력: 48 65 6c 6c 6f
}

여기서는 binary.Write를 사용하여 값을 BigEndian으로 변환한 후 바이너리 데이터로 쓰는 예시를 살펴볼 수 있습니다.

이러한 방법을 사용하여 Go 언어에서 바이너리 데이터를 특정 형식으로 변환할 수 있습니다. 필요에 따라 LittleEndian을 사용하거나 원하는 형식으로 데이터를 편집할 수 있습니다.

참고 문헌: