反转byte
代码语言:javascript
复制// 原地反转byte slice
func ReverseBytesInPlace(s []byte) []byte {
for from, to := 0, len(s)-1; from < to; from, to = from 1, to-1 {
s[from], s[to] = s[to], s[from]
}
return s
}
// 反转byte
func ReverseBytes(s []byte) []byte {
sz := len(s)
out := make([]byte, sz)
for from, to := 0, sz-1; from < sz; from {
out[to] = s[from]
to--
}
return out
}
int 和 byte 互转
代码语言:javascript
复制//整形转换成字节
func IntToBytes(n int64) (b []byte, err error) {
var bytesBuffer bytes.Buffer
err = binary.Write(&bytesBuffer, binary.BigEndian, n)
if err != nil {
return
}
b = bytesBuffer.Bytes()
return
}
//字节转换成整形
func BytesToInt(b []byte) (x int64, err error) {
bytesBuffer := bytes.NewBuffer(b)
err = binary.Read(bytesBuffer, binary.BigEndian, &x)
return
}
随机byte
- "math/rand"
- cr "crypto/rand"
代码语言:javascript
复制//随机byte 伪随机数生成器。也就是生成 整形和浮点型。
func RandodBytes(s []byte) {
rand.Read(s)
}
//用于加解密的更安全的随机数生成器
func CryptoRandodBytes(s []byte) {
cr.Read(s)
}
定长byte
代码语言:javascript
复制//获得定长byte slice
//str 填充字符串
//length 获得定长的长度
//char 不够长时填充的字符
func GetFixedLenByte(b []byte, length int, char byte) (tb []byte) {
if len(b) == 0 {
return
}
if len(b) == length {
return b
}
//超出切后面
if len(b) > length {
return b[:length]
}
//缺少添加char
if len(b) < length {
slice := make([]byte, length-len(b))
for k := range slice {
slice[k] = char
}
return append(slice, []byte(b)...)
}
return
}