0

默认情况下,我需要在 Netty 中以 little-endian 字节格式创建通道缓冲区,据我所知,我使用这段代码。

bootstrap.setOption("child.bufferFactory", new HeapChannelBufferFactory(ByteOrder.LITTLE_ENDIAN));

但是,当我创建新的通道缓冲区时,它们是大端的,因此我必须手动将它们设为小端。

有没有办法让所有通道缓冲区默认为小端?

谢谢!

编辑:

我正在创建这样的缓冲区:

ChannelBuffer opcodeBuffer = ChannelBuffers.buffer(ByteOrder.LITTLE_ENDIAN, 4);

如果我这样创建它们

ChannelBuffer opcodeBuffer = ChannelBuffers.buffer(4);

它们不是小端的

4

1 回答 1

2

您使用的设置用于配置Channel应用程序中的对象创建的缓冲区。这意味着 Netty 创建的每个后备缓冲区都是小端的。

ChannelBuffers是一个静态助手类,它不能使用引导程序中的配置。如果您检查docs,您会看到那些没有ByteOrder明确表示它们正在制作大端缓冲区的方法。

因此,如果您手动制作缓冲区,请确保使用正确的字节序。或者,您可以使用ChannelBufferFactory代码中的一种实现来轻松切换(如果需要)。

于 2012-10-13T19:36:04.630 回答