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.
52 lines
1.2 KiB
52 lines
1.2 KiB
|
1 year ago
|
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")
|
||
|
|
}
|