@ -5,16 +5,17 @@
 | 
			
		||||
package bytesconv
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// StringToBytes converts string to byte slice without a memory allocation.
 | 
			
		||||
func StringToBytes(s string) (b []byte) {
 | 
			
		||||
	sh := *(*reflect.StringHeader)(unsafe.Pointer(&s))
 | 
			
		||||
	bh := (*reflect.SliceHeader)(unsafe.Pointer(&b))
 | 
			
		||||
	bh.Data, bh.Len, bh.Cap = sh.Data, sh.Len, sh.Len
 | 
			
		||||
	return b
 | 
			
		||||
	return *(*[]byte)(unsafe.Pointer(
 | 
			
		||||
		&struct {
 | 
			
		||||
			string
 | 
			
		||||
			Cap int
 | 
			
		||||
		}{s, len(s)},
 | 
			
		||||
	))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// BytesToString converts byte slice to string without a memory allocation.
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user