1 回答
TA贡献1829条经验 获得超7个赞
这是一个解决方案。使用 append 更新字节切片长度。当移位结果为零时停止。
package main
import "fmt"
func intToBytes(val int) []byte {
b := make([]byte, 0, 5)
for i := range b[:cap(b)] {
v := val >> (8 * i)
if v == 0 && i != 0 {
break
}
b = append(b, byte(v))
}
return b
}
func main() {
for i := 0; i < 4; i++ {
b := intToBytes(i)
fmt.Println(b)
}
fmt.Println("...")
for i := 260 - 8; i < 260; i++ {
b := intToBytes(i)
fmt.Println(b)
}
fmt.Println("...")
for i := 8589934590 - 4; i < 8589934590; i++ {
b := intToBytes(i)
fmt.Println(b)
}
}
https://go.dev/play/p/b91oYBpOw_Y
[0]
[1]
[2]
[3]
...
[252]
[253]
[254]
[255]
[0 1]
[1 1]
[2 1]
[3 1]
...
[250 255 255 255 1]
[251 255 255 255 1]
[252 255 255 255 1]
[253 255 255 255 1]
- 1 回答
- 0 关注
- 103 浏览
添加回答
举报