我想将字符串分配给字节数组:
var arr [20]byte
str := "abc"
for k, v := range []byte(str) {
arr[k] = byte(v)
}
还有其他方法吗?
#1楼
我觉得比较好
package main
import "fmt"
func main() {
str := "abc"
mySlice := []byte(str)
fmt.Printf("%v -> '%s'",mySlice,mySlice )
}
在这里检查: http : //play.golang.org/p/vpnAWHZZk7
#2楼
安全简单:
[]byte("Here is a string....")
#3楼
除了上述方法外,您还可以做一些技巧
s := "hello"
b := *(*[]byte)(unsafe.Pointer((*reflect.SliceHeader)(unsafe.Pointer(&s))))
播放: http : //play.golang.org/p/xASsiSpQmC
您永远不要使用此:-)
#4楼
小菜一碟:
arr := []byte("That's all folks!!")
#5楼
最终创建了数组特定的方法来执行此操作。 与每个int类型具有特定方法的编码/二进制包非常相似。 例如binary.BigEndian.PutUint16([]byte, uint16)
。
func byte16PutString(s string) [16]byte {
var a [16]byte
if len(s) > 16 {
copy(a[:], s)
} else {
copy(a[16-len(s):], s)
}
return a
}
var b [16]byte
b = byte16PutString("abc")
fmt.Printf("%v\n", b)
输出:
[0 0 0 0 0 0 0 0 0 0 0 0 0 97 98 99]
请注意,我想如何在左侧而不是右侧进行填充。
http://play.golang.org/p/7tNumnJaiN
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3186767