gpt4 book ai didi

arrays - 如何迭代两个 byte slice

转载 作者:行者123 更新时间:2023-12-01 22:33:52 25 4
gpt4 key购买 nike

每个 byte slice 代表一个键,
我想从下键迭代到上键
pkg
https://golang.org/pkg/bytes/

假设有两个 byte slice lower :=[]byteupper :=[]byte我该怎么做呢?

   for i:=lower;i<upper;i++ {

}


 lower:= []byte{0,0,0,0,0,0}  // can be thought as 0 in decimal
upper:= []byte{0,0,0,0,0,255} // can be thought as 255 in decimal
//iterate over all numbers in between lower and upper
// {0,0,0,0,0,0} {0,0,0,0,0,1} ... {0,0,0,0,0,2} ..{0,0,0,0,0,255}
for i:=0; i<=255;i++{

}
//instead of converting to decimal iterate using byte arrays

或者,
如何将字节数组的范围(上下)分成较小的范围
\\eg 
l := []byte{0,1}
r := []byte{1,255}

将此范围缩小
   l := []byte{0 , 1}
l2:= []byte{x1,y1}
...
r:= []byte{1,255}

最佳答案

最简单的方法是将字节解释为大端整数。由于Go中没有int48类型(即6个字节的大整数),因此您必须首先用前导零扩展 byte slice ,直到它适合第二大类型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

关于arrays - 如何迭代两个 byte slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62469431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com