通过 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