1 回答
TA贡献1864条经验 获得超2个赞
最简单的方法是将字节简单地解释为大端整数。由于 Go 中没有 int48 类型(即六字节大整数),因此您必须首先使用前导零扩展字节切片,直到它适合下一个最大类型 int64 或 uint64。然后与标准 for 循环交互,并为每次迭代反转解码:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
lower := []byte{0, 0, 0, 0, 0, 0}
lowerInt := binary.BigEndian.Uint64(append([]byte{0, 0}, lower...))
upper := []byte{0, 0, 0, 0, 0, 255}
upperInt := binary.BigEndian.Uint64(append([]byte{0, 0}, upper...))
buf := make([]byte, 8)
for i := lowerInt; i <= upperInt; i++ {
binary.BigEndian.PutUint64(buf, i)
fmt.Println(buf[2:])
}
}
// Output:
// [0 0 0 0 0 0]
// [0 0 0 0 0 1]
// ...
// [0 0 0 0 0 254]
// [0 0 0 0 0 255]
在操场上尝试:https: //play.golang.org/p/86iN0V47nZi
- 1 回答
- 0 关注
- 209 浏览
添加回答
举报
