嗨,大家好,我在GoLang中编写了此函数,将24位整数(3字节)转换为32位整数(4字节)
func int24ToInt32(bytes []byte) uint32 {
return binary.BigEndian.Uint32(append([]byte{0x00}, bytes...))
}
Run Code Online (Sandbox Code Playgroud)
我想知道这是否是解决问题的不好方法。也许有人可以指导我寻求更好,更有效的解决方案
您的解决方案可读性强,能满足您的需求并且足够快。
如果您想使其更快,您可以做一些移位或自己做,
func int24ToInt32(bs []byte) uint32 {
return uint32(bs[2]) | uint32(bs[1])<<8 | uint32(bs[0])<<16
}
Run Code Online (Sandbox Code Playgroud)
它没有分配,也没有像标准库那样进行边界检查。它也比使用二进制包快几个数量级,但是我们谈论的是纳秒级,因此是否值得提高可读性确实是个问题。