go_dreamfactory/lego/utils/convert/convert.go
2022-06-07 20:18:22 +08:00

126 lines
2.6 KiB
Go

package convert
import (
"encoding/binary"
"math"
"unsafe"
)
func ByteToBytes(v byte) []byte {
return []byte{v}
}
func BoolToBytes(v bool) []byte {
var buf = make([]byte, 1)
if v {
buf[0] = 1
} else {
buf[0] = 0
}
return buf
}
func Int8ToBytes(v int8) []byte {
return []byte{(byte(v))}
}
func Int16ToBytes(v int16) []byte {
var buf = make([]byte, 2)
binary.BigEndian.PutUint16(buf, uint16(v))
return buf
}
func UInt16ToBytes(v uint16) []byte {
var buf = make([]byte, 2)
binary.BigEndian.PutUint16(buf, v)
return buf
}
func IntToBytes(v int) []byte {
var buf = make([]byte, 4)
binary.BigEndian.PutUint32(buf, uint32(v))
return buf
}
func Int32ToBytes(v int32) []byte {
var buf = make([]byte, 4)
binary.BigEndian.PutUint32(buf, uint32(v))
return buf
}
func UInt32ToBytes(v uint32) []byte {
var buf = make([]byte, 4)
binary.BigEndian.PutUint32(buf, v)
return buf
}
func Int64ToBytes(v int64) []byte {
var buf = make([]byte, 8)
binary.BigEndian.PutUint64(buf, uint64(v))
return buf
}
func UInt64ToBytes(v uint64) []byte {
var buf = make([]byte, 8)
binary.BigEndian.PutUint64(buf, v)
return buf
}
func Float32ToBytes(v float32) []byte {
bits := math.Float32bits(v)
bytes := make([]byte, 4)
binary.LittleEndian.PutUint32(bytes, bits)
return bytes
}
func Float64ToBytes(v float64) []byte {
bits := math.Float64bits(v)
bytes := make([]byte, 8)
binary.LittleEndian.PutUint64(bytes, bits)
return bytes
}
func StringToBytes(s string) []byte {
return *(*[]byte)(unsafe.Pointer(
&struct {
string
Cap int
}{s, len(s)},
))
}
func BytesTobyte(buf []byte) byte {
var data byte = buf[0]
return data
}
func BytesToBool(buf []byte) bool {
var data bool = buf[0] != 0
return data
}
func BytesToInt8(buf []byte) int8 {
var data int8 = int8(buf[0])
return data
}
func BytesToInt16(buf []byte) int16 {
return int16(binary.BigEndian.Uint16(buf))
}
func BytesToUInt16(buf []byte) uint16 {
return binary.BigEndian.Uint16(buf)
}
func BytesToInt(buf []byte) int {
return int(binary.BigEndian.Uint32(buf))
}
func BytesToInt32(buf []byte) int32 {
return int32(binary.BigEndian.Uint32(buf))
}
func BytesToUInt32(buf []byte) uint32 {
return binary.BigEndian.Uint32(buf)
}
func BytesToInt64(buf []byte) int64 {
return int64(binary.BigEndian.Uint64(buf))
}
func BytesToUInt64(buf []byte) uint64 {
return binary.BigEndian.Uint64(buf)
}
func BytesToFloat32(buf []byte) float32 {
bits := binary.LittleEndian.Uint32(buf)
return math.Float32frombits(bits)
}
func BytesToFloat64(buf []byte) float64 {
bits := binary.LittleEndian.Uint64(buf)
return math.Float64frombits(bits)
}
func BytesToString(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}