如何将字符串分配给字节数组

只谈情不闲聊 提交于 2020-03-03 18:53:15

我想将字符串分配给字节数组:

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!