## 将字符串转换成数组 

- 在golang中想实现类似C语言中将结构体中固定数组长度赋值,却发现不能愉快的使用strcpy,由于接触的

golang比较少,找了很久都没有找到将string写入数组的方法。 而且在平时使用私有协议中都是要将字符串写入固定长度的数组打包然后发送出来。

 

- 下面的函数

type ST_USER struct {

        name [20]byte

        id      [10]byte

上面是要打包的结构体,下面coder函数只是将string 转换成数组但还不能完全的转换,这里我还没有搞懂golang 赋值

func coder(msg string) ([]byte, int) {

 

    buf := new(bytes.Buffer)

    len := int32(len(msg))

    binary.Write(buf, binary.BigEndian, len)  //大小端根据需求修改,打包的数据是特定长度,那修改一下这两的len即可 

    binary.Write(buf, binary.BigEndian, []byte(msg))

    return buf.Bytes(), buf.Len()

}

上面只是实现了部份,仍然后半段还没找到好的方法,暂时记录。 

 

--------------------------------------------

处理方法 : 

func bb(){
    buf := new(bytes.Buffer)
    var data = []interface{}{
        uint16(61374),    // [20]byte("123")
        int8(-54),
        uint8(254),
    }
    for _, v := range data {
        err := binary.Write(buf, binary.LittleEndian, v)
        if err != nil {
            fmt.Println("binary.Write failed:", err)
        }
    }
    fmt.Printf("%x", buf.Bytes())
    fmt.Println(buf.Bytes())
}