package util import ( "bytes" "encoding/binary" "fmt" ) func BytesToInt(b []byte) (int, error) { if len(b) == 3 { b = append([]byte{0}, b...) } bytesBuffer := bytes.NewBuffer(b) switch len(b) { case 1: var tmp uint8 err := binary.Read(bytesBuffer, binary.LittleEndian, &tmp) return int(tmp), err case 2: var tmp uint16 err := binary.Read(bytesBuffer, binary.LittleEndian, &tmp) return int(tmp), err case 4: var tmp uint32 err := binary.Read(bytesBuffer, binary.LittleEndian, &tmp) return int(tmp), err default: return 0, fmt.Errorf("%s", "BytesToInt bytes lenth is invaild!") } } func IntToBytes(n int, b byte) ([]byte, error) { switch b { case 1: tmp := uint8(n) bytesBuffer := bytes.NewBuffer([]byte{}) binary.Write(bytesBuffer, binary.LittleEndian, &tmp) return bytesBuffer.Bytes(), nil case 2: tmp := uint16(n) bytesBuffer := bytes.NewBuffer([]byte{}) binary.Write(bytesBuffer, binary.LittleEndian, &tmp) return bytesBuffer.Bytes(), nil case 3, 4: tmp := uint32(n) bytesBuffer := bytes.NewBuffer([]byte{}) binary.Write(bytesBuffer, binary.LittleEndian, &tmp) return bytesBuffer.Bytes(), nil } return nil, fmt.Errorf("IntToBytes b param is invaild") }