| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- package utils
- import (
- "bytes"
- "encoding/binary"
- "encoding/json"
- )
- // IntToBytes int to []bytes littleEndian
- func IntToBytes(n int32) []byte {
- x := int32(n)
- bytesBuffer := bytes.NewBuffer([]byte{})
- _ = binary.Write(bytesBuffer, binary.LittleEndian, x)
- return bytesBuffer.Bytes()
- }
- // UintToBytes uint to []bytes littleEndian
- func UintToBytes(n uint32) []byte {
- x := uint32(n)
- bytesBuffer := bytes.NewBuffer([]byte{})
- _ = binary.Write(bytesBuffer, binary.LittleEndian, x)
- return bytesBuffer.Bytes()
- }
- // UintTobytesBigEnd uint to []bytes bigEndian
- func UintTobytesBigEnd(n uint32) []byte {
- x := uint32(n)
- bytesBuffer := bytes.NewBuffer([]byte{})
- _ = binary.Write(bytesBuffer, binary.BigEndian, x)
- return bytesBuffer.Bytes()
- }
- // Int32TobytesBigEnd int32 to []bytes bigEndian
- func Int32TobytesBigEnd(n int32) []byte {
- bytesBuffer := bytes.NewBuffer([]byte{})
- _ = binary.Write(bytesBuffer, binary.BigEndian, n)
- return bytesBuffer.Bytes()
- }
- // Uint64ToBytes to []bytes
- func Uint64ToBytes(n uint64) []byte {
- x := n
- bytesBuffer := bytes.NewBuffer([]byte{})
- _ = binary.Write(bytesBuffer, binary.LittleEndian, x)
- return bytesBuffer.Bytes()
- }
- // Uint64ToBytesBigEnd to []bytes
- func Uint64ToBytesBigEnd(n uint64) []byte {
- x := n
- bytesBuffer := bytes.NewBuffer([]byte{})
- _ = binary.Write(bytesBuffer, binary.BigEndian, x)
- return bytesBuffer.Bytes()
- }
- // BytesToInt 字节转换成整形
- func BytesToInt(b []byte) int32 {
- bytesBuffer := bytes.NewBuffer(b)
- var x int32
- _ = binary.Read(bytesBuffer, binary.LittleEndian, &x)
- return x
- }
- //BytesToUint32 to []bytes
- func BytesToUint32(b []byte) uint32 {
- bytesBuffer := bytes.NewBuffer(b)
- var x int32
- _ = binary.Read(bytesBuffer, binary.LittleEndian, &x)
- return uint32(x)
- }
- //BytesBigEndToUint32 to uint
- func BytesBigEndToUint32(b []byte) uint32 {
- bytesBuffer := bytes.NewBuffer(b)
- var x int32
- _ = binary.Read(bytesBuffer, binary.BigEndian, &x)
- return uint32(x)
- }
- //Uint16TobytesBigEnd to []bytes
- func Uint16TobytesBigEnd(n uint16) []byte {
- x := uint16(n)
- bytesBuffer := bytes.NewBuffer([]byte{})
- _ = binary.Write(bytesBuffer, binary.BigEndian, x)
- return bytesBuffer.Bytes()
- }
- //BytesBigEndToUint16 to uint16
- func BytesBigEndToUint16(b []byte) uint16 {
- bytesBuffer := bytes.NewBuffer(b)
- var x int16
- _ = binary.Read(bytesBuffer, binary.BigEndian, &x)
- return uint16(x)
- }
- //BytesBigEndToUint64 to uint64
- func BytesBigEndToUint64(b []byte) uint64 {
- bytesBuffer := bytes.NewBuffer(b)
- var x uint64
- _ = binary.Read(bytesBuffer, binary.BigEndian, &x)
- return x
- }
- //HTONL32 转换为网络字节序
- func HTONL32(v uint32) []byte {
- return UintTobytesBigEnd(v)
- }
- //HTONLint32 转换为网络字节序
- func HTONLInt32(v int32) []byte {
- return Int32TobytesBigEnd(v)
- }
- //HTONS 转换为网络字节序
- func HTONS(v uint16) []byte {
- return Uint16TobytesBigEnd(v)
- }
- //NTOHL32 转换为主机字节序
- func NTOHL32(buf []byte) uint32 {
- return BytesBigEndToUint32(buf)
- }
- //NTOHL64 转换为主机字节序
- func NTOHL64(buf []byte) uint64 {
- return BytesBigEndToUint64(buf)
- }
- //NTOHS 主机字节序
- func NTOHS(buf []byte) uint16 {
- return BytesBigEndToUint16(buf)
- }
- //DebugString 结构体对应的Json串
- func DebugString(v interface{}) string {
- if buf, err := json.MarshalIndent(v, " ", " "); err == nil {
- return string(buf)
- }
- return ""
- }
|