我在 Java 中有几行
out.write(223);
out.writeBytes("something");
out.writeInt(434);
到目前为止,我似乎没有找到 Java DataOutputStream
的替代品。在 Go 中并没有找到与 .write .writebytes 类似的功能。写。我真的很感谢一些帮助 :) 另外,如果您能向我展示如何连接到特定 IP 和端口并输出 的完整代码,那就太好了。字节 , 整数和其他数据到该 IP,例如 DataOutputStream
.
最佳答案
幸运的是,Go 有一个更细粒度的方法。
您有 encoding/binary
Go 的 stdlib 中的包,它能够将整数数据类型格式化为二进制文件——无论是小端(DataOutputStream
似乎是这样做的)和大端。
从 encoding/binary.LittleEndian.PutUint*
开始方法。
他们将编码的字节放入一个 slice 中,然后您可以按照通常的方式编写它(见下文)。
Go 中所有能够“摄取字节”的东西都实现了特殊的接口(interface) io.Writer
;文件和 TCP 套接字也是如此。
所以你写了你所谓的“字节”——不透明的字节 block 通常使用所谓的字节 slice 来操作,[]byte
, 在 Go 中——直接指向任何实现 io.Writer
的对象.
要写入整数值,首先将其编码为字节 slice ,然后以相同的方式写入。
字符串是一个更有趣的话题。我在 DataOutputStream
上的文档中没有看到任何提及关于它如何处理字符编码,所以我不知道该建议什么。
不过,您可以将任何 Go 字符串写入 io.Writer
调用 io.WriteSting
辅助功能。
关于你的
… it would be great if you could show me the full code on how to …
请阅读this .
要开始,请执行以下操作:
这将使您掌握 90% 的必要知识。
其余的可以通过阅读the Go Blog获得;特别是这些文章:
关于go - Go 中的 Java DataOutputStream 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62717233/