How to assign string to bytes array

后端 未结 9 895
盖世英雄少女心
盖世英雄少女心 2020-12-12 08:59

I want to assign string to bytes array:

var arr [20]byte
str := \"abc\"
for k, v := range []byte(str) {
  arr[k] = byte(v)
}

Have another m

9条回答
  •  攒了一身酷
    2020-12-12 09:25

    Ended up creating array specific methods to do this. Much like the encoding/binary package with specific methods for each int type. For example 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)
    

    Output:

    [0 0 0 0 0 0 0 0 0 0 0 0 0 97 98 99]
    

    Notice how I wanted padding on the left, not the right.

    http://play.golang.org/p/7tNumnJaiN

提交回复
热议问题