我有一个接收 []byte
的函数,但我有一个 int
,进行此转换的最佳方法是什么?
err = a.Write([]byte(myInt))
我想我可以走很远的路,把它变成一个字符串,然后把它变成字节,但这听起来很难看,我想有更好的方法来做到这一点。
原文由 vascop 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个接收 []byte
的函数,但我有一个 int
,进行此转换的最佳方法是什么?
err = a.Write([]byte(myInt))
我想我可以走很远的路,把它变成一个字符串,然后把它变成字节,但这听起来很难看,我想有更好的方法来做到这一点。
原文由 vascop 发布,翻译遵循 CC BY-SA 4.0 许可协议
binary.Write(a, binary.LittleEndian, myInt)
原文由 Brainstorm 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答2k 阅读✓ 已解决
1 回答3.4k 阅读
2 回答877 阅读✓ 已解决
2 回答2.2k 阅读
我同意 Brainstorm 的方法:假设您要传递机器友好的二进制表示,请使用
encoding/binary
库。 OP 建议binary.Write()
可能有一些开销。查看实现Write()
的源代码,我看到它做了一些运行时决策以获得最大的灵活性。正确的? Write() 接受一个非常通用的
data
第三个参数,这会增加一些开销,因为 Go 运行时会被迫编码类型信息。由于Write()
在这里做一些运行时决策,您在您的情况下根本不需要,也许您可以直接调用编码函数并查看它是否性能更好。是这样的:
让我们知道它的表现如何。
否则,如果您只是想获取整数的 ASCII 表示形式,则可以获得字符串表示形式(可能使用
strconv.Itoa
)并将该字符串转换为[]byte
类型。