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  // ----------------------------------------------------------