首先,我看到了Java equivalent of Python's struct.pack?..。这是一个澄清。
我对Java很陌生,并试图模仿我在Python中使用过的一些技术。我试图通过网络发送数据,并希望确保我知道它是什么样子。在python中,我会使用struct.pack。例如:
data = struct.pack('i', 10)
data += "Some string"
data += struct.pack('i', 500)
print(data)这将以字节顺序打印打包部分,中间以明文形式打印字符串。
我试着用ByteBuffer复制它:
String somestring = "Some string";
ByteBuffer buffer = ByteBuffer.allocate(100);
buffer.putInt(10);
buffer.put(somestring.getbytes());
buffer.putInt(500);
System.out.println(buffer.array());我有什么不理解的?
发布于 2013-08-20 16:54:47
听起来比你真正需要的要复杂得多。
我建议使用DataOutputStream和BufferedOutputStream
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);这避免了直接写入流来创建比所需的对象更多的对象。
发布于 2014-07-26 16:30:32
如果使用https://github.com/raydac/java-binary-block-parser,代码就会容易得多
JBBPOut.BeginBin().Int(10).Utf8("Some string").Int(500).End().toByteArray();https://stackoverflow.com/questions/18340650
复制相似问题