bytefloat.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package util
  2. import (
  3. "encoding/binary"
  4. "math"
  5. )
  6. func LEFloat32ToByte(float float32) []byte {
  7. bits := math.Float32bits(float)
  8. bytes := make([]byte, 4)
  9. binary.LittleEndian.PutUint32(bytes, bits)
  10. return bytes
  11. }
  12. func LEByteToFloat32(bytes []byte) float32 {
  13. bits := binary.LittleEndian.Uint32(bytes)
  14. return math.Float32frombits(bits)
  15. }
  16. func LEFloat64ToByte(float float64) []byte {
  17. bits := math.Float64bits(float)
  18. bytes := make([]byte, 8)
  19. binary.LittleEndian.PutUint64(bytes, bits)
  20. return bytes
  21. }
  22. func LEByteToFloat64(bytes []byte) float64 {
  23. bits := binary.LittleEndian.Uint64(bytes)
  24. return math.Float64frombits(bits)
  25. }
  26. func BEFloat32ToByte(float float32) []byte {
  27. bits := math.Float32bits(float)
  28. bytes := make([]byte, 4)
  29. binary.BigEndian.PutUint32(bytes, bits)
  30. return bytes
  31. }
  32. func BEByteToFloat32(bytes []byte) float32 {
  33. bits := binary.BigEndian.Uint32(bytes)
  34. return math.Float32frombits(bits)
  35. }
  36. func BEFloat64ToByte(float float64) []byte {
  37. bits := math.Float64bits(float)
  38. bytes := make([]byte, 8)
  39. binary.BigEndian.PutUint64(bytes, bits)
  40. return bytes
  41. }
  42. func BEByteToFloat64(bytes []byte) float64 {
  43. bits := binary.BigEndian.Uint64(bytes)
  44. return math.Float64frombits(bits)
  45. }