通过 udp 套接字发送 float32 值
Send float32 values over udp socket
我正在做一个 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
我正在做一个 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