为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法生成一段用特定字符填充的字节?

有没有办法生成一段用特定字符填充的字节?

Go
心有法竹 2023-05-08 15:15:03
我想动态生成一段字节并用一个值预填充它们。在这种情况下,如果难度是 3,我想生成[]byte("000").我有下面的工作代码,有没有办法把它优化成一个单行代码?(即初始化它而不必运行 for 循环并手动设置每个元素)?var targetPrefix []byte = make([]byte, difficulty)for i := 0; i < difficulty; i++ {  targetPrefix[i] = 48 // UTF8 encoding for "0"}
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我想这取决于你所说的优化是什么意思。如果您指的是性能,那不是真的。最终,当您“请求”一些内存时,必须对其进行迭代以设置值。在使用malloc. 如果你查看内存的内容,它可能是一堆 0,但它很可能是一堆随机值。

但是,如果您只想编写更少的代码并利用已经存在的东西,您可以看看bytes.Repeat:

targetPrefix := bytes.Repeat([]byte("0"), difficulty)


查看完整回答
反对 回复 2023-05-08
?
UYOU

TA贡献1878条经验 获得超4个赞

在 Go 中,将您的代码编写为:


package main


import "fmt"


func main() {

    difficulty := 7

    targetPrefix := make([]byte, difficulty)

    for i := range targetPrefix {

        targetPrefix[i] = '0'

    }

    fmt.Println(targetPrefix)

}

游乐场:https://play.golang.org/p/QrxEvsnRKMC


输出:


[48 48 48 48 48 48 48]

或者,同样在 Go 中,写:


package main


import (

    "bytes"

    "fmt"

)


func main() {

    difficulty := 7

    targetPrefix := bytes.Repeat([]byte{'0'}, difficulty)

    fmt.Println(targetPrefix)

}

游乐场:https://play.golang.org/p/Setx4kXTo1_H


输出:


[48 48 48 48 48 48 48]


查看完整回答
反对 回复 2023-05-08
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信