第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Go 中生成一個(gè)隨機(jī)的、固定長(zhǎng)度的字節(jié)數(shù)組

在 Go 中生成一個(gè)隨機(jī)的、固定長(zhǎng)度的字節(jié)數(shù)組

Go
蕪湖不蕪 2021-12-20 14:35:45
我有一個(gè)字節(jié)數(shù)組,固定長(zhǎng)度為 4。token := make([]byte, 4)我需要將每個(gè)字節(jié)設(shè)置為一個(gè)隨機(jī)字節(jié)。在最有效的情況下,我怎樣才能做到這一點(diǎn)?math/rand就我而言,這些方法不提供隨機(jī)字節(jié)函數(shù)。也許有一種內(nèi)置方式,或者我應(yīng)該生成一個(gè)隨機(jī)字符串并將其轉(zhuǎn)換為字節(jié)數(shù)組?
查看完整描述

3 回答

?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊

包蘭特


import "math/rand" 

功能讀取


func Read(p []byte) (n int, err error)

Read 從默認(rèn) Source 生成 len(p) 個(gè)隨機(jī)字節(jié)并將它們寫入 p。它總是返回 len(p) 和一個(gè) nil 錯(cuò)誤。


函數(shù)(*Rand) 讀取


func (r *Rand) Read(p []byte) (n int, err error)

Read 生成 len(p) 個(gè)隨機(jī)字節(jié)并將它們寫入 p。它總是返回 len(p) 和一個(gè) nil 錯(cuò)誤。


例如,


package main


import (

    "math/rand"

    "fmt"

)


func main() {

    token := make([]byte, 4)

    rand.Read(token)

    fmt.Println(token)

}

輸出:


[187 163 35 30]


查看完整回答
反對(duì) 回復(fù) 2021-12-20
?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊

Go 1.6 向math/rand包中添加了一個(gè)新函數(shù):


func Read(p []byte) (n int, err error)

它byte用隨機(jī)數(shù)據(jù)填充傳遞的切片。使用這個(gè)rand.Read():


token := make([]byte, 4)

if _, err := rand.Read(token); err != nil {

    // Handle err

}

fmt.Println(token)

rand.Read()有 2 個(gè)返回值:“讀取”字節(jié)數(shù)和一個(gè)(可選)error。這是為了符合通用io.Reader接口,但文檔rand.Read()狀態(tài)(盡管有簽名)它永遠(yuǎn)不會(huì)實(shí)際返回非nil錯(cuò)誤,因此我們可以省略檢查它,這將其簡(jiǎn)化為:


token := make([]byte, 4)

rand.Read(token)

fmt.Println(token)

rand.Seed()在使用math/rand包之前不要忘記調(diào)用以正確初始化它,例如:


rand.Seed(time.Now().UnixNano())

注意:在 Go 1.6 之前沒(méi)有math/rand.Read()函數(shù),但是有(現(xiàn)在仍然是)一個(gè)crypto/rand.Read()函數(shù),但是這個(gè)crypto/rand包實(shí)現(xiàn)了一個(gè)加密安全的偽隨機(jī)數(shù)生成器,所以它比math/rand.


查看完整回答
反對(duì) 回復(fù) 2021-12-20
?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

Go 1.6 向math/rand包中添加了一個(gè)新函數(shù):


func Read(p []byte) (n int, err error)

它byte用隨機(jī)數(shù)據(jù)填充傳遞的切片。使用這個(gè)rand.Read():


token := make([]byte, 4)

if _, err := rand.Read(token); err != nil {

    // Handle err

}

fmt.Println(token)

rand.Read()有 2 個(gè)返回值:“讀取”字節(jié)數(shù)和一個(gè)(可選)error。這是為了符合通用io.Reader接口,但文檔rand.Read()狀態(tài)(盡管有簽名)它永遠(yuǎn)不會(huì)實(shí)際返回非nil錯(cuò)誤,因此我們可以省略檢查它,這將其簡(jiǎn)化為:


token := make([]byte, 4)

rand.Read(token)

fmt.Println(token)

rand.Seed()在使用math/rand包之前不要忘記調(diào)用以正確初始化它,例如:


rand.Seed(time.Now().UnixNano())

注意:在 Go 1.6 之前沒(méi)有math/rand.Read()函數(shù),但是有(現(xiàn)在仍然是)一個(gè)crypto/rand.Read()函數(shù),但是這個(gè)crypto/rand包實(shí)現(xiàn)了一個(gè)加密安全的偽隨機(jī)數(shù)生成器,所以它比math/rand.


查看完整回答
反對(duì) 回復(fù) 2021-12-20
  • 3 回答
  • 0 關(guān)注
  • 571 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)