2

我需要在 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 中做到这一点,所以请帮忙。

4

1 回答 1

4

我使用扩展版本StringIO.

虽然我没有使用任何put*方法,但这些方法可以很容易地实现,例如:

class StringIO

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

end

您可以查看代码原始类的文档我的扩展

于 2011-08-23T08:44:43.800 回答