You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.2 KiB
51 lines
1.2 KiB
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") |
|
}
|
|
|