前几天写计网的项目用了Golang,中间有一步需要把字节和int相互转化,自己写了一个转换函数,用Golang自带的 binary.LittleEndian
库实现,int转byte的数组以小端形式存储,byte转int支持长度为1/2个字节的转换,其实再长也可以做,多加几个ifelse就是了,不过没这个需求~
// IntToBytes 将int类型的数转化为字节并以小端存储
func IntToBytes(intNum int) []byte {
uint16Num := uint16(intNum)
buf := bytes.NewBuffer([]byte{})
binary.Write(buf, binary.LittleEndian, uint16Num)
return buf.Bytes()
}
// BytesToInt 将以小端存储的长为1/2字节的数转化成int类型的数
func BytesToInt(bytesArr []byte) int {
var intNum int
if len(bytesArr) == 1 {
bytesArr = append(bytesArr, byte(0))
intNum = int(binary.LittleEndian.Uint16(bytesArr))
} else if len(bytesArr) == 2 {
intNum = int(binary.LittleEndian.Uint16(bytesArr))
}
return intNum
}
妈妈我Go语言入门啦!