[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을 사용하거나 원하는 형식으로 데이터를 편집할 수 있습니다.
참고 문헌:
- https://golang.org/pkg/encoding/binary/
- https://tutorialedge.net/golang/go-reading-writing-files-using-go/