将字节数组存储到 Go lang 中的字符串变量中

storing byte array into a string variable in Go lang

我是第一次使用Go Lang。 我有一个字节数组,我想通过套接字发送它。 目前,我的套接字数据有字符串变量 msg1、msg2、msg3。 我想将我的字节数组附加到它。下面是代码片段。

var arr1 [4]byte = [4]byte{11,22,33,44}

addr := msg1 + msg2 + msg3
socket.Send(addr, 0)

但是当我尝试这样做时出现错误。

addr := msg1 + msg2 + msg3 + string(arr1)

Error: cannot convert arr1 (type [4]byte) to type string

遇到这种情况怎么办?

实际代码

package main
import "fmt"

var arr1 [4]byte = [4]byte{11,22,33,44}
func main() {
    data := "msg1" + string(arr1[:])
  fmt.Printf("\n%s",data)
}

字节数组不能转换为字符串,但字节切片可以:

addr := msg1 + msg2 + msg3 + string(arr1[:])

或者将 arr1 声明为字节切片:

var arr1 = []byte{11,22,33,44}

byte 不是 string,读作 https://en.wikipedia.org/wiki/ASCII .

猜猜你想要这个:

// var arr1 [4]byte = [4]byte{11, 22, 33, 44}
var arr1 [4]string = [4]string{"11", "22", "33", "44"}

func main() {
    data := "msg1" + arr1[0] + arr1[1] + arr1[2] + arr1[3]
    fmt.Printf("\n%s", data)
}

使用append(),我给了你两种方法。我不知道你真正想要哪种方式。但我希望其中一种方法对您有所帮助。

package main

import "fmt"

var arr [4]string = [4]string{"11", "22", "33", "44"}
var messages [3]string = [3]string{"msg1", "msg2", "msg3"}

func main() {
    // fmt.Println(arr[0:4])

    // One way
    appending1 := append(messages[0:1], arr[0])
    appending2 := append(messages[1:2], arr[1])
    appending3 := append(messages[2:], arr[2])
    fmt.Println(appending1)
    fmt.Println(appending2)
    fmt.Println(appending3)

    // Second way
    appending1 := append(messages[0:1], arr[0], arr[1], arr[2], arr[3])
    appending2 := append(messages[1:2], arr[0], arr[1], arr[2], arr[3])
    appending3 := append(messages[2:3], arr[0], arr[1], arr[2], arr[3])
    fmt.Println(appending1)
    fmt.Println(appending2)
    fmt.Println(appending3)
}

单向结果

[11 msg1]
[22 msg2]
[33 msg3]

第二种方式结果

[msg1 11 22 33 44]
[msg2 11 22 33 44]
[msg3 11 22 33 44]
package main

import (
    "encoding/hex"
    "fmt"
)

var byteArray [4]byte = [4]byte{11, 22, 33, 44}

func main() {
    msg1 := "HI"
    msg2 := "Hello"
    msg3 := "There"

    byteArrayToString := hex.EncodeToString(byteArray[:])
    fmt.Printf("\n%s", msg1+msg2+msg3+byteArrayToString)
}