2022-05-08 20:49:45 +03:00
|
|
|
package byteutil
|
|
|
|
|
|
|
|
import (
|
|
|
|
"unsafe"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Copy returns a copy of []byte.
|
|
|
|
func Copy(b []byte) []byte {
|
|
|
|
if b == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
p := make([]byte, len(b))
|
|
|
|
copy(p, b)
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
|
|
|
// B2S returns a string representation of []byte without allocation.
|
2024-09-26 22:50:08 +03:00
|
|
|
// Since Go strings are immutable, the bytes passed to String must
|
|
|
|
// not be modified as long as the returned string value exists.
|
2022-05-08 20:49:45 +03:00
|
|
|
func B2S(b []byte) string {
|
2024-09-26 22:50:08 +03:00
|
|
|
return unsafe.String(unsafe.SliceData(b), len(b))
|
2022-05-08 20:49:45 +03:00
|
|
|
}
|
|
|
|
|
2024-09-26 22:50:08 +03:00
|
|
|
// S2B returns a []byte representation of string without allocation.
|
2022-05-08 20:49:45 +03:00
|
|
|
func S2B(s string) []byte {
|
2024-09-26 22:50:08 +03:00
|
|
|
return unsafe.Slice(unsafe.StringData(s), len(s))
|
2022-05-08 20:49:45 +03:00
|
|
|
}
|