Go 中的高效字节切片编码
如何使用惯用的方法将字节切片编码为 Go 中的 int64?考虑以下代码片段:
import "fmt" func main() { var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244} var data int64 for i := 0; i < 8; i++ { data |= int64(mySlice[i] & byte(255)) << uint((8*8)-((i+1)*8)) } fmt.Println(data) }
虽然此代码完成了任务,但是否有更简洁、更优雅的方法来实现相同的结果?
惯用解决方案
下面提供了将字节切片编码为 int64 的更惯用的方法代码:
func main() { var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244} data := int64(0) for _, b := range mySlice { data = (data << 8) | int64(b) } fmt.Printf("%d\n", data) }
在此解决方案中,我们利用范围运算符迭代字节切片的元素,并使用按位左移运算符 (
惯用语的优点方法
结论
虽然原始代码片段在具体的位操作方面可能更清晰操作上,惯用的做法更加简洁、优雅、可维护。对于大多数情况,惯用的解决方案是在 Go 中将字节切片编码为 int64 的首选。
以上是如何在 Go 中有效地将字节切片编码为 int64?的详细内容。更多信息请关注PHP中文网其他相关文章!