go一些类型转换收集整理

//十进制切片数组转换为16进制字符串
func Tool_DecimalByteSlice2HexString(DecimalSlice []byte) string {
var sa = make([]string, 0)
for _, v := range DecimalSlice {
sa = append(sa, fmt.Sprintf("%02X", v))
}
ss := strings.Join(sa, “”)
return ss
}

//byte转int
func BytesToInt(b []byte) uint {
bytesBuffer := bytes.NewBuffer(b)

var x int32
binary.Read(bytesBuffer, binary.BigEndian, &x)

return uint(x)

}

//int转byte
func IntToBytes(n uint) []byte {
x := int32(n)
bytesBuffer := bytes.NewBuffer([]byte{})
binary.Write(bytesBuffer, binary.BigEndian, x)
return bytesBuffer.Bytes()
}

//字节数组转二进制
const (
zero = byte(‘0’)
one = byte(‘1’)
lsb = byte(’[’) // left square brackets
rsb = byte(’]’) // right square brackets
space = byte(’ ')
)
func BytesToBinaryString(bs []byte) string {
l := len(bs)
bl := l*8 + l + 1
buf := make([]byte, 0, bl)
buf = append(buf, lsb)
for _, b := range bs {
buf = appendBinaryString(buf, b)
buf = append(buf, space)
}
buf[bl-1] = rsb
return string(buf)
}

//字节转二进制
func appendBinaryString(bs []byte, b byte) []byte {
var a byte
for i := 0; i < 8; i++ {
a = b
b <<= 1
b >>= 1
switch a {
case b:
bs = append(bs, zero)
default:
bs = append(bs, one)
}
b <<= 1
}
return bs
}

猜你喜欢

转载自blog.csdn.net/Monster1m/article/details/86689550
今日推荐