java - 在 Ruby 中创建类似字节缓冲区的对象

标签 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 中执行此操作,所以请帮忙。

最佳答案

我这样做是为了Steam Condenser使用 StringIO 的扩展版本。

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

class StringIO

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

end

您可以查看codedocumentation of the original classmy extensions

关于java - 在 Ruby 中创建类似字节缓冲区的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7158124/

相关文章:

java - RowMapper是抽象的,无法实例化

java - 为什么这个静态方法慢慢地需要更长的时间才能完成?

ruby-on-rails - 为什么在不传递 :id param work (in rails)? 的情况下重定向到 #show 操作

C 中的 Java 字节缓冲区?

java - 在java中释放直接缓冲区以及可能的陷阱

Java TCP Socket - 向 Controller 发送命令

java - Java中String[](带方括号)和String(不带方括号)的区别

ruby-on-rails - 尝试使用 heroku gem 将我的数据库推送到 Amazon RDS 时出现 'Application Error'

ruby - 通过 Rack::Auth::Basic 有选择地允许某些 url

java - 读取大文件(例如非常大的文本文档)的最佳方式