我需要通过TCP创建一个客户端-服务器示例。在客户端,我读取了2个数字,然后将它们发送到服务器。我面临的问题是我无法从转换[]byte
为int
,因为通信仅接受type的数据[]byte
。
有什么方法可以转换[]byte
为int
或可以发送int
到服务器吗?
一些示例代码将不胜感激。
谢谢。
我需要通过TCP创建一个客户端-服务器示例。在客户端,我读取了2个数字,然后将它们发送到服务器。我面临的问题是我无法从转换[]byte
为int
,因为通信仅接受type的数据[]byte
。
有什么方法可以转换[]byte
为int
或可以发送int
到服务器吗?
一些示例代码将不胜感激。
谢谢。
Answers:
Uint64
方法在source的这一行失败_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808
,因为显然索引超出范围。我需要这种Uint16
方法。
binary.Read()
代替。请参阅:codereview.stackexchange.com/questions/15945/...
如果[] byte是ASCII字节数字,则首先将[] byte转换为字符串,然后使用将字符串转换为int的strconv
packageAtoi
方法。
package main
import (
"fmt"
"strconv"
)
func main() {
byteNumber := []byte("14")
byteToInt, _ := strconv.Atoi(string(byteNumber))
fmt.Println(byteToInt)
}
去操场-https: //play.golang.org/p/gEzxva8-BGP
为了在字节序列之间对数字进行编码/解码,有一个编码/二进制包。文档中有示例:请参阅目录中的“示例”部分。
这些编码功能在io.Writer接口上运行。该net.TCPConn式工具io.Writer,所以你可以写/直接读取到的网络连接。
如果连接的任一端都有Go程序,则可能需要使用encoding / gob。有关使用gob的演练,请参阅文章“数据的gob”(跳至底部以查看独立的示例)。
*TCPConn
作为参数传递给gob.NewEncoder
/ gob.NewDecoder
。
var bs []byte
value, _ := strconv.ParseInt(string(bs), 10, 64)