亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

循環將在 golang 中按 1 到 5 [] 字節的順序輸出

循環將在 golang 中按 1 到 5 [] 字節的順序輸出

Go
楊魅力 2022-11-08 16:32:25
如何制作一個按 1 到 5 [] 字節順序輸出的循環?這是我在輸出中需要的:[0][1][2]...[255][0 1][1 1][2 1]...etc (to max 5 bytes)例如,如果我從數字進行正常循環并使用這些函數將它們轉換為字節:for i := 0; i < 8589934590; i++ {    b : intToBytes(i)    fmt.Println(b)}func intToBytes(val int) []byte {    r := make([]byte, 5)    for i := int(0); i < 5; i++ {        r[i] = byte((val >> (8 * i)) & 0xff)    }    return r}輸出末尾會有額外的零。如果這個選項是正確的,那么如何去掉多余的零?
查看完整描述

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]


查看完整回答
反對 回復 2022-11-08
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號