string.go 434 B

123456789101112131415161718192021222324
  1. package utl
  2. import(
  3. "reflect"
  4. "unsafe"
  5. )
  6. func StringToBytes(s string) []byte {
  7. sh := (*reflect.StringHeader)(unsafe.Pointer(&s))
  8. bh := reflect.SliceHeader{
  9. Data: sh.Data,
  10. Len: sh.Len,
  11. }
  12. return *(*[]byte)(unsafe.Pointer(&bh))
  13. }
  14. func BytesToString(b []byte) string {
  15. bh := (*reflect.SliceHeader)(unsafe.Pointer(&b))
  16. sh := reflect.StringHeader{
  17. Data: bh.Data,
  18. Len: bh.Len,
  19. }
  20. return *(*string)(unsafe.Pointer(&sh))
  21. }