gpt4 book ai didi

java - Netty:在 ChannelBuffer 中来回交换 ByteOrder

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:59 24 4
gpt4 key购买 nike

我目前正在使用 Netty 3.5.10.Final 为使用混合字节顺序的二进制协议(protocol)的服务器实现客户端。也就是说,协议(protocol)中有很多情况我必须以大端顺序读/写一组字节,然后以小端顺序读/写另一组字节,然后再次切换回大端。

我发现(据我所知)没有一种简单的方法来处理这种情况,尤其是当字节顺序不同时,ChannelBuffers.wrappedBuffer(ChannelBuffer buf) 会抛出 IllegalArgumentException。我正在学习 Netty 和这个协议(protocol),所以我在开始的时候并不知道我会遇到这个问题。

其他人是如何处理这个问题的,尤其是在 Netty 3.x 框架的范围内?不过,我很想听听所有解决方案。

最佳答案

如果您正在实现的协议(protocol)具有混合字节顺序的字段,那么您可以选择一种字节顺序作为默认值(例如大端)并交换特定字段的字节顺序:

ChannelBuffer buf = ...;
int littleEndianField = ChannelBuffers.swapInt(buf.readInt());

根据字段的宽度,您可以使用其中之一:swapShort()swapMedium()swapInt() , 和 swapLong()

关于java - Netty:在 ChannelBuffer 中来回交换 ByteOrder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13638350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com