我需要在 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 中执行此操作,所以请帮忙。
最佳答案
我这样做是为了Steam Condenser使用 StringIO
的扩展版本。
虽然我不使用任何 put*
方法,但这些方法可以很容易地实现,例如:
class StringIO
def put_int(i)
write [i].pack('v')
end
end
您可以查看code ,documentation of the original class和 my extensions 。
关于java - 在 Ruby 中创建类似字节缓冲区的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7158124/