在Go语言中将字节数组存储到字符串变量中。

huangapple go评论181阅读模式
英文:

storing byte array into a string variable in Go lang

问题

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

  1. var arr1 [4]byte = [4]byte{11,22,33,44}
  2. addr := msg1 + msg2 + msg3
  3. socket.Send(addr, 0)

但是当我尝试这样做时,我会得到一个错误。

  1. addr := msg1 + msg2 + msg3 + string(arr1)
  2. 错误:无法将arr1(类型[4]byte)转换为类型string

在这种情况下我该怎么办?

实际代码

  1. package main
  2. import "fmt"
  3. var arr1 [4]byte = [4]byte{11,22,33,44}
  4. func main() {
  5. data := "msg1" + string(arr1[:])
  6. fmt.Printf("\n%s",data)
  7. }
英文:

I am using Go Lang for the first time.
I have a byte array which I want to send over a socket.
Currently, my socket data has string variables msg1,msg2, msg3.
I want to append my byte array to it. Below is the code snippet.

  1. var arr1 [4]byte = [4]byte{11,22,33,44}
  2. addr := msg1 + msg2 + msg3
  3. socket.Send(addr, 0)

But when I try to do that I get an error.

  1. addr := msg1 + msg2 + msg3 + string(arr1)
  2. Error: cannot convert arr1 (type [4]byte) to type string

What should I do in this case?

Actual code

  1. package main
  2. import "fmt"
  3. var arr1 [4]byte = [4]byte{11,22,33,44}
  4. func main() {
  5. data := "msg1" + string(arr1[:])
  6. fmt.Printf("\n%s",data)
  7. }

答案1

得分: 3

一个字节数组无法转换为字符串,但是字节切片可以:

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

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

  1. var arr1 = []byte{11,22,33,44}
英文:

A byte array cannot be converted to a string, but a byte slice can:

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

Or declare the arr1 as a byte slice:

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

答案2

得分: 0

byte 不是 string,请参考 https://en.wikipedia.org/wiki/ASCII

猜测你想要这个:

  1. // var arr1 [4]byte = [4]byte{11, 22, 33, 44}
  2. var arr1 [4]string = [4]string{"11", "22", "33", "44"}
  3. func main() {
  4. data := "msg1" + arr1[0] + arr1[1] + arr1[2] + arr1[3]
  5. fmt.Printf("\n%s", data)
  6. }
英文:

byte is not string, read https://en.wikipedia.org/wiki/ASCII .

Guess u want this:

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

答案3

得分: 0

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

  1. package main
  2. import "fmt"
  3. var arr [4]string = [4]string{"11", "22", "33", "44"}
  4. var messages [3]string = [3]string{"msg1", "msg2", "msg3"}
  5. func main() {
  6. // fmt.Println(arr[0:4])
  7. // 第一种方式
  8. appending1 := append(messages[0:1], arr[0])
  9. appending2 := append(messages[1:2], arr[1])
  10. appending3 := append(messages[2:], arr[2])
  11. fmt.Println(appending1)
  12. fmt.Println(appending2)
  13. fmt.Println(appending3)
  14. // 第二种方式
  15. appending1 := append(messages[0:1], arr[0], arr[1], arr[2], arr[3])
  16. appending2 := append(messages[1:2], arr[0], arr[1], arr[2], arr[3])
  17. appending3 := append(messages[2:3], arr[0], arr[1], arr[2], arr[3])
  18. fmt.Println(appending1)
  19. fmt.Println(appending2)
  20. fmt.Println(appending3)
  21. }

第一种方式的结果

  1. [11 msg1]
  2. [22 msg2]
  3. [33 msg3]

第二种方式的结果

  1. [msg1 11 22 33 44]
  2. [msg2 11 22 33 44]
  3. [msg3 11 22 33 44]
英文:

Using the append(), I have given you two ways. I don't know which of the way you really want. But I hope one of these ways will be helpful for you.

  1. package main
  2. import "fmt"
  3. var arr [4]string = [4]string{"11", "22", "33", "44"}
  4. var messages [3]string = [3]string{"msg1", "msg2", "msg3"}
  5. func main() {
  6. // fmt.Println(arr[0:4])
  7. // One way
  8. appending1 := append(messages[0:1], arr[0])
  9. appending2 := append(messages[1:2], arr[1])
  10. appending3 := append(messages[2:], arr[2])
  11. fmt.Println(appending1)
  12. fmt.Println(appending2)
  13. fmt.Println(appending3)
  14. // Second way
  15. appending1 := append(messages[0:1], arr[0], arr[1], arr[2], arr[3])
  16. appending2 := append(messages[1:2], arr[0], arr[1], arr[2], arr[3])
  17. appending3 := append(messages[2:3], arr[0], arr[1], arr[2], arr[3])
  18. fmt.Println(appending1)
  19. fmt.Println(appending2)
  20. fmt.Println(appending3)
  21. }

One way result

  1. [11 msg1]
  2. [22 msg2]
  3. [33 msg3]

Second way result

  1. [msg1 11 22 33 44]
  2. [msg2 11 22 33 44]
  3. [msg3 11 22 33 44]

答案4

得分: 0

  1. package main
  2. import (
  3. "encoding/hex"
  4. "fmt"
  5. )
  6. var byteArray [4]byte = [4]byte{11, 22, 33, 44}
  7. func main() {
  8. msg1 := "HI"
  9. msg2 := "Hello"
  10. msg3 := "There"
  11. byteArrayToString := hex.EncodeToString(byteArray[:])
  12. fmt.Printf("\n%s", msg1+msg2+msg3+byteArrayToString)
  13. }
  1. package main
  2. import (
  3. "encoding/hex"
  4. "fmt"
  5. )
  6. var byteArray [4]byte = [4]byte{11, 22, 33, 44}
  7. func main() {
  8. msg1 := "HI"
  9. msg2 := "Hello"
  10. msg3 := "There"
  11. byteArrayToString := hex.EncodeToString(byteArray[:])
  12. fmt.Printf("\n%s", msg1+msg2+msg3+byteArrayToString)
  13. }
英文:
  1. package main
  2. import (
  3. "encoding/hex"
  4. "fmt"
  5. )
  6. var byteArray [4]byte = [4]byte{11, 22, 33, 44}
  7. func main() {
  8. msg1 := "HI"
  9. msg2 := "Hello"
  10. msg3 := "There"
  11. byteArrayToString := hex.EncodeToString(byteArray[:])
  12. fmt.Printf("\n%s", msg1+msg2+msg3+byteArrayToString)
  13. }

huangapple
  • 本文由 发表于 2021年9月14日 12:04:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/69171661.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定