You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ntool-biz/nmodbus/util/converter.go

43 lines
1.0 KiB
Go

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package util
import (
"encoding/binary"
"math"
)
func Float32ToUint16(order binary.ByteOrder, val float32) []uint16 {
bs := Float32ToBytes(order, val)
return BytesToUint16(order, bs)
}
func Float32ToBytes(order binary.ByteOrder, val float32) []byte {
bits := math.Float32bits(val)
bs := make([]byte, 4)
order.PutUint32(bs, bits)
return bs
}
// BytesToUint16 转换byte数组到uint16数组自定义端序
func BytesToUint16(byteOrder binary.ByteOrder, bytes []byte) []uint16 {
values := make([]uint16, len(bytes)/2)
for i := range values {
values[i] = byteOrder.Uint16(bytes[i*2 : (i+1)*2])
}
return values
}
// Uint16ToBytes 转换uint16数组到byte数组大端序
func Uint16ToBytes(byteOrder binary.ByteOrder, values []uint16) []byte {
bytes := make([]byte, len(values)*2)
for i, value := range values {
byteOrder.PutUint16(bytes[i*2:(i+1)*2], value)
}
return bytes
}
// BitAtPosition 获取某字节指定 位 的值
func BitAtPosition(value uint8, pos uint) uint8 {
return (value >> pos) & 0x01
}