[go] encoding/binary 패키지를 사용하여 부동 소수점 숫자를 바이너리로 인코딩하는 방법

Go의 encoding/binary 패키지는 데이터를 바이너리로 인코딩하고 디코딩하는 기능을 제공합니다. 이 패키지를 사용하여 부동 소수점 숫자를 바이너리로 인코딩할 수 있습니다.

1. 부동 소수점 숫자를 바이너리로 인코딩하기

다음은 encoding/binary 패키지를 사용하여 부동 소수점 숫자를 바이너리로 인코딩하는 예제 코드입니다.

package main

import (
	"encoding/binary"
	"fmt"
	"math"
	"os"
)

func main() {
	// 부동 소수점 숫자
	num := math.Pi

	// 바이너리로 인코딩
	buf := make([]byte, 8)  // 64비트 부동 소수점 숫자를 인코딩하기 위해 8바이트 버퍼 생성
	binary.LittleEndian.PutUint64(buf, math.Float64bits(num))  // 부동 소수점 숫자를 64비트 바이너리로 인코딩하여 버퍼에 저장

	// 결과 출력
	fmt.Printf("부동 소수점 숫자: %v\n", num)
	fmt.Printf("바이너리로 인코딩된 값: %v\n", buf)

	// 결과를 바이너리 파일로 저장
	file, _ := os.Create("binary.dat")
	defer file.Close()
	file.Write(buf)
}

위의 예제 코드는 encoding/binary 패키지를 사용하여 64비트 부동 소수점 숫자인 math.Pi를 바이너리로 인코딩하고, 인코딩된 값을 출력하며 바이너리 파일로 저장하는 방법을 보여줍니다.

2. 바이너리로 인코딩된 부동 소수점 숫자 디코딩하기

바이너리로 인코딩된 부동 소수점 숫자를 디코딩하는 방법은 다음과 같습니다.

package main

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

func main() {
	// 바이너리 파일에서 읽어오기
	file, _ := os.Open("binary.dat")
	defer file.Close()
	buf := make([]byte, 8)  // 64비트 부동 소수점 숫자를 디코딩하기 위해 8바이트 버퍼 생성
	file.Read(buf)

	// 바이너리를 부동 소수점 숫자로 디코딩
	num := math.Float64frombits(binary.LittleEndian.Uint64(buf))

	// 결과 출력
	fmt.Printf("바이너리로 디코딩된 부동 소수점 숫자: %v\n", num)
}

위의 예제 코드는 바이너리 파일에서 64비트 부동 소수점 숫자를 읽어와서 encoding/binary 패키지를 사용하여 디코딩하는 방법을 보여줍니다.

이렇게 encoding/binary 패키지를 사용하여 부동 소수점 숫자를 바이너리로 인코딩하고 디코딩할 수 있습니다.

이상입니다. 도움이 되기를 바랍니다.