首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java的ByteBuffer复制struct.pack

使用Java的ByteBuffer复制struct.pack
EN

Stack Overflow用户
提问于 2013-08-20 16:47:44
回答 2查看 2.6K关注 0票数 0

首先,我看到了Java equivalent of Python's struct.pack?..。这是一个澄清。

我对Java很陌生,并试图模仿我在Python中使用过的一些技术。我试图通过网络发送数据,并希望确保我知道它是什么样子。在python中,我会使用struct.pack。例如:

代码语言:javascript
复制
data = struct.pack('i', 10) 
data += "Some string"
data += struct.pack('i', 500)
print(data)

这将以字节顺序打印打包部分,中间以明文形式打印字符串。

我试着用ByteBuffer复制它:

代码语言:javascript
复制
String somestring = "Some string";
ByteBuffer buffer = ByteBuffer.allocate(100);
buffer.putInt(10);
buffer.put(somestring.getbytes());
buffer.putInt(500);
System.out.println(buffer.array());

我有什么不理解的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-20 16:54:47

听起来比你真正需要的要复杂得多。

我建议使用DataOutputStreamBufferedOutputStream

代码语言:javascript
复制
DataOutputStream dos = new DataOutputStream(
                       new BufferedOutputStream(socket.getOutputStream()));
dos.writeInt(50);
dos.writeUTF("some string"); // this includes a 16-bit unsigned length
dos.writeInt(500);

这避免了直接写入流来创建比所需的对象更多的对象。

票数 1
EN

Stack Overflow用户

发布于 2014-07-26 16:30:32

如果使用https://github.com/raydac/java-binary-block-parser,代码就会容易得多

代码语言:javascript
复制
JBBPOut.BeginBin().Int(10).Utf8("Some string").Int(500).End().toByteArray();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18340650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档