golang 提供 htonl/htons 吗?

在 C 编程中,当我想通过网络发送一个整数时,我们需要使用 htonl() 或 htons() 在发送之前将整数从主机字节顺序转换为网络字节顺序。

但是在golang中,我查过net包,并没有找到类似htons/htonl这样的功能。那么在使用 golang 时应该如何发送整数呢?我需要自己实现 htons/htonl 吗?



湖上湖
浏览 849回答 2
2回答

斯蒂芬大帝

网络字节顺序只是大端,因此您可以使用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参数)。

慕慕森

我想你以后是ByteOrder在encoding/binary。ByteOrder 指定如何将字节序列转换为 16 位、32 位或 64 位无符号整数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go