funcString2Bytes(sstring)[]byte{// StringData获取string的底层数组指针,unsafe.Slice通过指针和长度构建切片returnunsafe.Slice(unsafe.StringData(s),len(s)) }funcBytes2String(b []byte)string{// SliceData获取切片的底层数组指针,unsafe.String通过指针和长度构建stringreturnunsafe.String(unsafe.SliceData(b)...
在Go 1.20及更高版本中,这些结构体已被标记为已弃用(deprecated)。因此,推荐在大多数情况下使用标准转换方法,以确保代码的安全性和可维护性。 总结来说,使用[]byte(s)是实现string到[]byte转换的标准且安全的方法。
string与byte的转换是最常见的一种,通常我们会使用强转方式,但其实还有另一种更加高效的方式,本文会演示两种转换方式。 普通转换 func main() { fmt.Println([]byte("abcd")) fmt.Println(string([]byte{'1', '2', '3'})) } 输出 [97 98 99 100] 123 高效转换 上面的转换虽然简单,但是效率不高...
// yte[]直接转换为string,反过来就不可以了varstr = []byte("hello world")vardata =string(a) 当然我们也可以把string和byte[]用作另一种类型的初始化,这样可以做到两个类型的通用转换: // string转bytesvarstrstring="hello world"vardata []byte= []byte(str) vardata [10]bytedata[0] ='H'data...
var buf bytes.Buffer buf.WriteString("Hello ") buf.Write([]byte{'W', 'o', 'r', 'l', ...
分别测试以下4个方法:funcstringTobyteSlice(sstring)[]byte{tmp1:=(*[2]uintptr)(unsafe.Pointer(&s))tmp2:=[3]uintptr{tmp1[0],tmp1[1],tmp1[1]}return*(*[]byte)(unsafe.Pointer(&tmp2))}funcstringTobyteSliceOld(sstring)[]byte{return[]byte(s)}funcbyteSliceToString(bytes[]...
可以通过两个方法由string得到byte,第一个是: 注意到,这里的G既不是""双引号又不是``这种go里面字符串引起来的,而是普通的单引号。 第二种方法是: 这种曲折的方法,先转成[]byte,然后再取第一个。
[]rune 和 []byte 的相互转换需要先转成字符串再转换。 funcmain(){str:="Hello, 中国!"rs:=string2rune1(str)bs:=string2bytes1(str)convertedBytes:=rune2bytes(rs)convertedRunes:=bytes2rune(bs)fmt.Println(bs)fmt.Println(convertedBytes)fmt.Println(rs)fmt.Println(convertedRunes)}funcrune2bytes(...
gopackagemainimport("fmt")funcconvertToNumberString(s string)string{bytes:=[]byte(s)varnumberString stringfor_,b:=range bytes{numberString+=fmt.Sprintf("%d",b)}returnnumberString}funcmain(){s:="Hello, 世界"numberString:=convertToNumberString(s)fmt.Println(numberString)} ...