在Ruby中创建类似对象的bytebuffer

时间:2011-08-23 08:24:10

标签: java ruby bytebuffer

我需要在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中执行此操作,所以请帮助。

1 个答案:

答案 0 :(得分:3)

我使用StringIO的扩展版本为Steam Condenser执行此操作。

虽然我不使用任何put*方法,但这些方法很容易实现,例如:

class StringIO

  def put_int(i)
    write [i].pack('v')
  end

end

您可以查看codedocumentation of the original classmy extensions