Merge pull request #693 from FJSDS/change_bytes_string

fix unsafe.go
This commit is contained in:
Vladimir Mihailenco 2018-01-15 16:12:18 +02:00 committed by GitHub
commit 041b11eb4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 14 deletions

View File

@ -3,25 +3,20 @@
package internal
import (
"reflect"
"unsafe"
)
// BytesToString converts byte slice to string.
func BytesToString(b []byte) string {
bytesHeader := (*reflect.SliceHeader)(unsafe.Pointer(&b))
strHeader := reflect.StringHeader{
Data: bytesHeader.Data,
Len: bytesHeader.Len,
}
return *(*string)(unsafe.Pointer(&strHeader))
return *(*string)(unsafe.Pointer(&b))
}
// StringToBytes converts string to byte slice.
func StringToBytes(s string) []byte {
sh := (*reflect.StringHeader)(unsafe.Pointer(&s))
bh := reflect.SliceHeader{
Data: sh.Data,
Len: sh.Len,
Cap: sh.Len,
}
return *(*[]byte)(unsafe.Pointer(&bh))
return *(*[]byte)(unsafe.Pointer(
&struct {
string
Cap int
}{s,len(s)},
))
}