我需要通过TCP创建一个客户端 - 服务器示例。在客户端,我读了2个数字,然后将它们发送到服务器。我遇到的问题是我无法从[]byte
转换为int
,因为通信只接受[]byte
类型的数据。
有没有办法将[]byte
转换为int
或者我可以将int
发送到服务器?
一些示例代码将非常感激。
谢谢。
从字节数组开始,您可以使用package main
import "fmt"
import "encoding/binary"
func main() {
var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244}
data := binary.BigEndian.Uint64(mySlice)
fmt.Println(data)
}
进行转换。
例如,如果您想要读取整数:
binary package
同一个包允许使用通用的buf := bytes.NewBuffer(b) // b is []byte
myfirstint, err := binary.ReadVarint(buf)
anotherint, err := binary.ReadVarint(buf)
函数读取带有所需字节顺序的unsigned int或float。
对于字节序列的编码/解码数字,有Read包。文档中有一些示例:请参阅目录中的“示例”部分。
这些编码功能在encoding/binary接口上运行。 io.Writer类型实现了io.Writer,因此您可以直接写入/读取网络连接。
如果你在连接的任何一侧有一个Go程序,你可能想看看使用net.TCPConn。有关使用gob的演练,请参阅文章“encoding/gob”(跳到底部查看自包含的示例)。
如果[]字节是ASCII字节数,则首先将[]字节转换为字符串,然后使用Gobs of data包strconv
方法将字符串转换为int。
Atoi
去游乐场 - package main
import (
"fmt"
"strconv"
)
func main() {
byteNumber := []byte("14")
byteToInt, _ := strconv.Atoi(string(byteNumber))
fmt.Println(byteToInt)
}