mirror of
https://github.com/pyihe/go-pkg.git
synced 2025-10-06 00:16:53 +08:00
73 lines
1.1 KiB
Go
73 lines
1.1 KiB
Go
package bytes
|
|
|
|
import (
|
|
"unsafe"
|
|
|
|
"github.com/valyala/bytebufferpool"
|
|
)
|
|
|
|
type ByteBuffer = bytebufferpool.ByteBuffer
|
|
|
|
var (
|
|
Get = bytebufferpool.Get()
|
|
Put = func(b *ByteBuffer) {
|
|
if b != nil {
|
|
bytebufferpool.Put(b)
|
|
}
|
|
}
|
|
)
|
|
|
|
// String []byte转换为string
|
|
func String(b []byte) string {
|
|
return *(*string)(unsafe.Pointer(&b))
|
|
}
|
|
|
|
// SliceEqual 判断两个字节切片每个元素是否相等
|
|
func SliceEqual(a, b []byte) bool {
|
|
aLen, bLen := len(a), len(b)
|
|
if aLen != bLen {
|
|
return false
|
|
}
|
|
|
|
if (a == nil) != (b == nil) {
|
|
return false
|
|
}
|
|
|
|
b = b[:aLen]
|
|
for i, v := range a {
|
|
if b[i] != v {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
// Contain 判断字节切片b是否包含ele元素
|
|
func Contain(ele byte, b []byte) bool {
|
|
for _, v := range b {
|
|
if v == ele {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// Reverse 翻转字节切片
|
|
func Reverse(b []byte) {
|
|
l := len(b)
|
|
for i := l/2 - 1; i >= 0; i-- {
|
|
opp := l - i - 1
|
|
b[i], b[opp] = b[opp], b[i]
|
|
}
|
|
}
|
|
|
|
// Remove 从b中删除ele
|
|
func Remove(ele byte, b []byte) {
|
|
for i := range b {
|
|
if ele == b[i] {
|
|
b = append(b[:i], b[i+1:]...)
|
|
break
|
|
}
|
|
}
|
|
}
|