如何在Go Programming中将[] byte转换为int

问题描述 投票:54回答:5

我需要通过TCP创建一个客户端 - 服务器示例。在客户端,我读了2个数字,然后将它们发送到服务器。我遇到的问题是我无法从[]byte转换为int,因为通信只接受[]byte类型的数据。

有没有办法将[]byte转换为int或者我可以将int发送到服务器?

一些示例代码将非常感激。

谢谢。

tcp client-server byte type-conversion go
5个回答
62
投票

(转发this answer

您可以使用encoding / binary qazxsw poi为16,32,64位类型执行此操作

ByteOrder

Play

10
投票

从字节数组开始,您可以使用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。


6
投票

对于字节序列的编码/解码数字,有Read包。文档中有一些示例:请参阅目录中的“示例”部分。

这些编码功能在encoding/binary接口上运行。 io.Writer类型实现了io.Writer,因此您可以直接写入/读取网络连接。

如果你在连接的任何一侧有一个Go程序,你可能想看看使用net.TCPConn。有关使用gob的演练,请参阅文章“encoding/gob”(跳到底部查看自包含的示例)。


2
投票

如果[]字节是ASCII字节数,则首先将[]字节转换为字符串,然后使用Gobs of datastrconv方法将字符串转换为int。

Atoi

去游乐场 - package main import ( "fmt" "strconv" ) func main() { byteNumber := []byte("14") byteToInt, _ := strconv.Atoi(string(byteNumber)) fmt.Println(byteToInt) }


© www.soinside.com 2019 - 2024. All rights reserved.