将字节数组存储到 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)
}
我是第一次使用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)
}