在C编程中,当我想通过网络发送整数时,我们需要使用htonl()或htons()从主机字节顺序转换整数 在发送之前联网字节顺序。
但是在golang中,我检查了网络包,并且找不到像htons / htonl这样的类似函数。那么在使用golang时我应该如何发送整数?我需要实现htons / htonl吗? 自己?
答案 0 :(得分:22)
网络字节顺序只是大端,因此您可以使用encoding/binary
包来执行编码。
data := make([]byte, 6)
binary.BigEndian.PutUint16(data, 0x1011)
binary.BigEndian.PutUint32(data[2:6], 0x12131415)
或者,如果您要写入io.Writer
,则同一个套餐中的binary.Write()
功能可能会更方便(同样,使用binary.BigEndian
值作为order
参数)。
答案 1 :(得分:5)
我认为你所追求的是ByteOrder
in encoding/binary
。
ByteOrder指定如何将字节序列转换为16位,32位或64位无符号整数。