我需要在Ruby中创建类似Bytebuffer的对象。这是我在JAVA中的例子
int ADD_BYTES_FOR_MSG_LENGTH = 4;
Integer messageBodySize = new Integer(messageBody.getBytes().length);
byte[] messageHeader = ByteBuffer.allocate(ADD_BYTES_FOR_MSG_LENGTH).putInt(messageBodySize).array();
messageToSend = new byte[messageHeader.length + messageBodySize];
System.arraycopy(messageHeader, 0, messageToSend, 0, messageHeader.length);
System.arraycopy(messageBody.getBytes(), 0, messageToSend, messageHeader.length, messageBodySize);
我创建一个以4个字节开头的消息,其中包含消息正文部分的大小,然后是实际消息。我不知道如何在Ruby中执行此操作,所以请帮助。
答案 0 :(得分:3)
我使用StringIO
的扩展版本为Steam Condenser执行此操作。
虽然我不使用任何put*
方法,但这些方法很容易实现,例如:
class StringIO
def put_int(i)
write [i].pack('v')
end
end
您可以查看code,documentation of the original class和my extensions。