Go 프로젝트에서 작업 중이며 UDPSocket을 사용하여 float32 값을 보내고 싶습니다. 내가 이해하지 못하는 것은이 숫자를 보내기 전에 바이트 버퍼로 변환하는 가장 좋은 방법과 수신 후 다시 float32로 변환하는 방법입니다.
현재 온라인에서 찾은 다음 함수를 사용하여 float32-> [] byte를 변환하고 있지만 원하는 것을 얻고 있는지조차 확실하지 않습니다.
func Float32bytes(float float32) []byte {
bits := math.Float32bits(float)
bytes := make([]byte, 4)
binary.LittleEndian.PutUint32(bytes, bits)
return bytes
}
나는 여전히 그것들을 float32로 변환하는 방법을 모릅니다.
예를 들면
package main
import (
"encoding/binary"
"fmt"
"math"
)
func Float32Bytes(float float32) []byte {
bits := math.Float32bits(float)
bytes := make([]byte, 4)
binary.LittleEndian.PutUint32(bytes, bits)
return bytes
}
func BytesFloat32(bytes []byte) float32 {
bits := binary.LittleEndian.Uint32(bytes)
float := math.Float32frombits(bits)
return float
}
func main() {
pi := float32(math.Pi)
b := Float32Bytes(pi)
f := BytesFloat32(b)
fmt.Println(f, f == pi, BytesFloat32(Float32Bytes(pi)) == pi)
}
산출:
3.1415927 true true
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다