github.com/qiniu/dyn@v1.3.0/unsafe/unsafe.go (about) 1 package unsafe 2 3 import ( 4 "reflect" 5 "unsafe" 6 ) 7 8 // ---------------------------------------------------------- 9 10 func ToBytes(data string) []byte { 11 12 sh := *(*reflect.StringHeader)(unsafe.Pointer(&data)) 13 arr := (*[1 << 30]byte)(unsafe.Pointer(sh.Data)) 14 return arr[:sh.Len] 15 } 16 17 func ToString(data []byte) string { 18 19 sh := *(*reflect.SliceHeader)(unsafe.Pointer(&data)) 20 ret := reflect.StringHeader{Data: sh.Data, Len: sh.Len} 21 return *(*string)(unsafe.Pointer(&ret)) 22 } 23 24 // ----------------------------------------------------------