支持小端写入/读取的可扩展 ByteBuffer 等效项?

Posted

技术标签:

【中文标题】支持小端写入/读取的可扩展 ByteBuffer 等效项?【英文标题】:Expandable ByteBuffer equivalent supporting little endian write/reads? 【发布时间】:2011-09-15 22:47:44 【问题描述】:

我目前正在使用ByteBuffer 来存储一系列原语,然后再通过网络发送。 我正在使用data.order(ByteOrder.LITTLE_ENDIAN);,因为这就是应该发送数据的方式。

是否有支持 putShort()... 使用小端序的 ByteBuffer 等效项,并且可以扩展?

我可以编写一个检查limit()position() 的包装器,并在必要时创建一个新的更大的ByteBuffer,但我不敢相信没有其他现有的类可以做到这一点。

【问题讨论】:

【参考方案1】:

看来 Apache Mina 有你想要的:http://mina.apache.org/report/1.1/apidocs/org/apache/mina/common/ByteBuffer.html

我知道 Mina 用于许多生产消息传递系统,因此它可能是比 Google 返回的其他结果更好的选择。当您似乎正在编写网络代码时,您可能会发现 Mina 的其他部分很有用。

但是,我认为分配一个比需要大得多的 JDK 缓冲区要简单得多,只需进行简单检查以确保不会超出它。如果出现溢出,写入第一个缓冲区,然后分配替换。

【讨论】:

以上是关于支持小端写入/读取的可扩展 ByteBuffer 等效项?的主要内容,如果未能解决你的问题,请参考以下文章

ByteBuffer

在 Java 中原子读取然后写入部分 ByteBuffer

Java bytebuffer 将三个字节转换为 int

从 ByteBuffer 获取到 byte[] 不写入到 byte[]

Netty——ByteBuffer的方法说明演示示例

Netty——ByteBuffer的方法说明演示示例