我正在编写一个函数,在字节数组的开头添加5-10字节(计数是随机的),在末尾添加5-10个随机字节:
func padWithRandomBytes(b []byte) []byte {
startBytes := make([]byte, 10-rand.Intn(5))
endBytes := make([]byte, 10-rand.Intn(5))
newSlice := make([]byte, len(startBytes)+len(b)+len(endBytes))
copy(newSlice[:len(startBytes)], startBytes)
copy(newSlice[len(startBytes):len(startBytes)+len(b)], b)
copy(newSlice[len(startBytes)+len(b):], endBytes)
return newSlice
}这感觉很低效。有没有一种更直观的方法来写这篇文章呢?
发布于 2013-05-05 11:38:11
例如,
package main
import (
"fmt"
"math/rand"
"time"
)
func padWithRandomBytes(b []byte) []byte {
s := 5 + rand.Intn(5+1)
e := 5 + rand.Intn(5+1)
r := make([]byte, s+len(b)+e)
copy(r[s:], b)
return r
}
func main() {
rand.Seed(time.Now().UnixNano())
b := []byte{1, 2, 3}
fmt.Println(len(b), b)
r := padWithRandomBytes(b)
fmt.Println(len(r), r)
}输出(随机):
3 [1 2 3]
20 [0 0 0 0 0 0 0 0 1 2 3 0 0 0 0 0 0 0 0 0]
3 [1 2 3]
15 [0 0 0 0 0 0 1 2 3 0 0 0 0 0 0]https://codereview.stackexchange.com/questions/25825
复制相似问题