netty ByteOrder大小端

Netty跨平台通信的第一道坎:大小端字节序处理指南 场景推荐方案默认网络通信使用Netty的大端序(无需额外配置)与C++交互显式设置高性能场景通过池化缓冲区并统一字节序关键原则:在协议设计阶段明确字节序,并在代码中显式声明,避免跨平台时的隐蔽错误! 阅读详情

 ByteOrder直译的意思就是字节序。

在计算机网络二进制传输的过程中,字节存在两种序列化顺序:高位字节序和低位字节序。

高位字节序:高位字节在前,低位字节在后(内存地址低位在前,高位地址在后)。低位字节序:低位字节在前,高位字节在后(内存地址低位在前,高位地址在后)。

netty中默认字节序是大端字节序,即字节高位在前,低位在后,符合人类的书写习惯。

ByteOrder类也比较简单,只存在返回高位还是低位的ByteOrder和描述ByteOrder的name字段。

 public final class ByteOrder {
​
    private String name;
​
    private ByteOrder(String name) {
        this.name = name;
    }
​
    /**
     * Constant denoting big-endian byte order.  In this order, the bytes of a
     * multibyte value are ordered from most significant to least significant.
     */
    public static final ByteOrder BIG_ENDIAN
        = new ByteOrder("BIG_ENDIAN");
​
    /**
     * Constant denoting little-endian byte order.  In this order, the bytes of
     * a multibyte value are ordered from least significant to most
     * significant.
     */
    public static final ByteOrder LITTLE_ENDIAN
        = new ByteOrder("LITTLE_ENDIAN");
​
    /**
     * Retrieves the native byte order of the underlying platform.
     *
     * <p> This method is defined so that performance-sensitive Java code can
     * allocate direct buffers with the same byte order as the hardware.
     * Native code libraries are often more efficient when such buffers are
     * used.  </p>
     *
     * @return  The native byte order of the hardware upon which this Java
     *          virtual machine is running
     */
    public static ByteOrder nativeOrder() {
        return Bits.byteOrder();
    }
​
    /**
     * Constructs a string describing this object.
     *
     * <p> This method returns the string <tt>"BIG_ENDIAN"</tt> for {@link
     * #BIG_ENDIAN} and <tt>"LITTLE_ENDIAN"</tt> for {@link #LITTLE_ENDIAN}.
     * </p>
     *
     * @return  The specified string
     */
    public String toString() {
        return name;
    }
​
}

netty测试:

①、默认使用高位存储字节序。

public class ByteOrder {
​
    private static final int writeInt = 345;
​
    public static void main(String[] args) {
        ByteBuf byteBuf = Unpooled.buffer(4,4);
        byteBuf.writeIntLE(writeInt);
        byte[] arr = new byte[4];
        byteBuf.readBytes(arr);
        System.out.println(Arrays.toString(arr));
    }
​
}

 

②、使用小端字节序。

 

VS2015与QT界面开发中解决‘ui_xxx.h‘文件类名不一致导致的编译错误 本文详细解析了在VS2015与QT界面开发中,因.ui文件顶层部件objectName与生成类名不一致导致'ui_xxx.h'文件出现'不完整的类型'编译错误的根本原因。通过分步排查,指导开发者统一Qt设计师对象名、自动生成文件类名及代码引用名,并提供强制重新编译UI文件、清理中间文件等解决方案,有效解决此类常见编译问题。 阅读详情

相关推荐

【信创-k8s】银河麒麟V10国防版+鲲鹏/飞腾(arm64架构)在线/离线部署k8s1.30+kubesphere

银河麒麟作为国家核高基专项的重要成果,国防版凭借其卓越的安全性和可靠性,已成为军工领域的首选操作系统。之前我们在适配麒麟V4国防版的过程中已发现诸多安全性要求,而麒麟V10国防版在安全防护等级上又达到了更高的级别。本文将主要演示离线部署,因为军工项目基本不会出现联网场景。即使在线,也可以按离线方式部署,且离线部署由于有私有仓库,不会存在镜像获取不到和丢失情况。

jiaworld的博客 730

netty粘包处理、LengthFieldBasedFrameDecoder 解码器

最近项目中接触了netty。 因为是tcp连接。 在频繁接收消息的时候。可能会出现粘包问题。 粘包:发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。 接收端在接收的时候。会接收到2个报文粘在了一起。解析出现异常。这里就叫粘包 解决这个问题也比较简单。 netty提供了一个自定义长度的解码器。 只要配置一下 就可以完成解析啦。 要使用这个的前提是。你传输的数据中。 有一个字段是。长度域。根据这个长度域进行拆

q826qq1878的博客 1492

GaN功率放大器设计避坑指南:从仿真到实测的Doherty PA完整流程(基于ADS 2023)

本文详细介绍了基于ADS 2023软件,从理论计算、电路仿真到版图后仿真的GaN Doherty功率放大器完整设计流程。文章聚焦C波段应用,深入剖析了负载调制网络设计、稳定性处理、版图电磁仿真等关键环节中的常见误区与工程折衷,为工程师提供了一套从设计到实测的实战避坑指南。

weixin_29238147的博客 529

Netty框架编程之字节序大小端问题研究

netty实战1. 背景 1. 背景

蜗牛的高铁 1610

AD(AltiumDesigner)封装导入allegro生成allegro封装

AD(AltiumDesigner)封装导入allegro生成allegro封装 貌似PCB的封装问题是一个无尽话题,为了简单我总是想找捷径(主要还是太懒了),因为也是近期才开始学习使用allegro进行PCB设计,在最近的一个设计中,很多器件封装allegro中都没有,一个一个画感觉很费时间,但是在AD(AltiumDesigner)的封装库中是有的,于是便想着AD的封装库能不能倒入到alleg...

yangh2560的博客 2万+

数字IC设计实现之hierarchical flow系列(一)

数字IC设计实现之hierarchical flow系列(一) 最近这段时间小编又比较忙起来了,今天抽空来咖啡厅码字来了,刚到时脑子一片空白,不知道要分享些什么(项目结束后将会在知识星球上分享数字 IC 设计实现 Tapeout 前要review的那些 checklist)。突然间想起来有个星友希望小编分享些数字 IC 设计实现 hierarchical flow 的相关内容。考虑到现在大都采用这种方式来做 design 和实现,那就选这个 topic 了。限于篇幅和时间限制,今天只分享逻辑综合部分和布局布

weixin_37584728的博客 5999

java 16进制双字节数据获取高低字节

小字节序或大字节序。就要按照他们的要求进行组装数据。* 16进制转字节。低字节在前、高字节在后。但是在和某些设备通信。* byte数组转为十六进制字符串。

王威振的博客 2021

Microsoft AI SDK 与 SAP ABAP:让企业级 AI 能力触手可及的深度整合指南

借助 Microsoft AI SDK,ABAP 开发者无需跳出熟悉的事务码与数据字典,就能把 GPT‑4 的强大语言理解与生成能力深度植入采购、销售、财务等核心业务流程。只要掌握“初始化 SDK → 构造 Prompt → 解析输出”这一范式,未来无论 Azure OpenAI、OpenAI 还是本地化 LLM,都能在同一套代码骨架内快速切换,实现真正的“AI 即服务”。现在,就让我们在下一行 ABAP 里拥抱智能未来。参考链接均于 2025‑07‑22 提取,推荐读者结合实际版本进一步验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 431

java netty 服务端向客户端发送16进制数据,客户端无法接收-已解决

项目中需要通过netty与C语言建立连接,双方是通过16进制进行数据传输 本案例主要介绍如何在JavaNetty与C Sokcet进行字符串通信,Java服务端,C客户端。 重点提示:网络通信中都是byte字节,两边通信一定要统一编码,尽量避免乱码与接收不到的问题。 1.设置ChildChannelInitializer.java中initChannel(SocketChannel c...

冲冲冲 1万+

YOLOv8-Pose NCNN Android部署优化实践

本文探讨了在Android设备上高效部署YOLOv8-Pose姿态检测模型的优化实践。通过修改Pose头部导出逻辑,分离后处理到C++端实现,并替换SiLU激活函数为ReLU,显著提升了计算效率。具体步骤包括模型结构优化、ONNX导出、NCNN转换与算子融合,最终在Android端实现了30FPS的稳定推理性能。项目提供了完整的优化思路和实现方案,对移动端AI应用开发具有参考价值。

FJN110的博客 323

RH850从0搭建Autosar开发环境【1】- 如何创建Davinci Configurator配置工程

当我们在公司接触Autosar开发环境时,基本都是完整的Davinci Configurator的配置工程,我们只能修修补补。 从本章开始将手把手搭建Rh850基于Vector公司Davinci Configurator的autosar配置工程。主要涉及到OS,COM,DCMM,NVM,BSWM,ECUM等基本模块,包括Vlink,memap使用,XCP标定的实现等。基本是实现一个基础版的项目开发。包括后期的GreenHills编译问题处理,生成最终的Hex文件。

weixin_42412049的博客 1万+

TCP服务开发过程中所说得大小端是什么

在TCP服务开发过程中,大小端(Endianness)是涉及数据在计算机存储和传输中如何组织和表示的一个概念。它与数据字节序相关,指的是在多字节数据类型(例如整数或浮点数)在内存中如何存储字节的顺序。(Big Endian)是指将最高有效字节(Most Significant Byte,MSB)存储在最低的存储地址,而最低有效字节(Least Significant Byte,LSB)存储在最高的存储地址。这类似于书写习惯,从左到右写入的顺序。

不爱运动的跑者 2973

基于jeecgboot3.9.0的项目管理——项目工作台(二)

基于jeecgboot3.9.0的项目管理——项目工作台(二)

宁波阿成的博客 205

netty 大端小端_深入浅出: 大小端模式

Writer :李强强一、什么是大小端?大小端在计算机业界,Endian表示数据在存储器中的存放顺序。百度百科如下叙述之:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储...

weixin_42470438的博客 1593

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Netty 之 大小端

https://blog.youkuaiyun.com/qq_36856233/article/details/86492149 原配置只写了五个参数,LengthFieldBasedFrameDecoder里ByteOrder默认是大端(高位在前低位在后): 新协议配置修改后,添加两个字段ByteOrder.LITTLE_ENDIAN和failFast的true: ...

NRGAGA的专栏 2196

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【netty】关于netty大小端的问题

今天开发新协议碰到协议长度域是低位在前高位在后,老协议都是高位在前低位在后,原配置需要改动   原配置只写了五个参数,LengthFieldBasedFrameDecoder里ByteOrder默认是大端(高位在前低位在后):   新协议配置修改后,添加两个字段ByteOrder.LITTLE_ENDIAN和failFast的true:   百度了半小时总于找到解决办法了,做个笔记...

星尘的博客 4663

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Netty-LengthFieldBasedFrameDecoder()长度域大小端问题

LengthFieldBasedDecoder()是Netty的一个基于消息长度域的解码器,网上有很多资料教大家如何去使用,这里不在介绍。 本文主要解决一下消息头长度域的大端小端问题 LengthFieldBasedFrameDecoder() 默认采用大端模式(也就是长度域的低字节对应长度数字的高位),但在项目中,通信对方发给我的长度域采用小端模式,这就让我有点懵逼了,查阅了相关资料,发现该Decoder中有一个「ByteOrder」参数,该参数可以设定长度域的大小端模式。 带有该参数的构造方法如图所示:

核聚 1420

netty5源码探索(二)----AbstractByteBuf

第二篇主要研究netty中ByteBuf的主要实现:AbstractByteBuf,站在初学者的角度来看bytebuf. 主要集中在复杂区块的操作:discardReadBytes以及writeBytes两个方法上

草木斋 2475

使用NIO与Netty3 进行 序列化与反序列化的实现

序列化:把对象转换为字节序列的过程称为对象的序列化。反序列化:把字节序列恢复为对象的过程称为对象的反序列化。一般我们实现序列化与反序列化,会使用Java中的Serialization 接口。下面使用三种方式进行序列化与反序列化。(1)单一的Int 数据进行序列化与反序列化(普通方法)这里涉及了大小端字节序列端模式分为:小端字节序和大端字节序,也就是字节在内存中的顺序。小端字节序:低字节存于内存低地...

无根的浮萍 2106

RPC

RPC netty 之nio Netty Hello Word NIO的selector.wakeup的实现 Netty 核心代码 简单了解RPC实现原理 Netty5 服务端和客户端 netty心跳 Protocol Buffer 使用 理解大小端字节序 自定义序列化 mina保持android端\服务端的长连接 Netty 长连接服务 ...

架构师的成长之路的博客 4028

LengthFieldBasedFrameDecoder()解决Tcp粘包/半包问题

背景:最近使用Netty来做项目,过程中与服务器通信出现了Tcp协议的沾包/半包问题。其中,我还被大端小端给坑了一次,特写此文记录一下自己的解决办法。 说明:一般来说,使用Tcp进行通信会出现沾包/半包现象,这是因为Tcp协议是流式协议,没有明确的消息帧的分界线。 TCP消息格式 图片解读:一个消息帧(frame)由 消息头(Head) 和 消息体(Body) 组成。其中,消息头总长度由长度域(Length)和一个 其他(others)组成,其总长度固定。 Length:长度域,一般代表消息体(body)

核聚 728

Netty将接收到信息由字节数组变成16进制字符串

【代码】Netty将接收到信息由字节数组变成16进制字符串。

chenggang003的博客 659

java十六进制大小端转换_字节顺序

1、定义字节顺序,又称端序或尾序(英语:Endianness),在计算机科学领域中,指电脑内存中或在数字通信链路中,组成多字节的字的字节的排列顺序。在几乎所有的机器上,多字节对象都被存储为连续的字节序列。2、表现形式字节的排列方式有两个通用规则。例如,将一个多位数的低位放在较小的地址处,高位放在较大的地址处,则称小端序(Little-endian);反之则称大端序(Big-endian)。在网络应...

weixin_42447681的博客 2860

Netty 中 LengthFieldBasedFrameDecoder 构造函数取值备忘

public LengthFieldBasedFrameDecoder(ByteOrder byteOrder, int maxFrameLength, int lengthFieldOffset, int lengthFieldLength, int lengthAdjustment, int initialBytesToStrip, boolean failFast) { ...

weixin_33928467的博客 178

【Netty】TCP粘包、拆包、编解码问题

粘包拆包分析 主要探讨固定长度字段存消息长度 在这个例子中, 设置了最大行长度为 8192 字节,会剔除换行符,并且在检测到超长行时立即抛出异常。假设有一个基于文本的协议,消息以(换行符)结束。 在这个例子中,会查找换行符,将接收的数据分割成单独的行,并将每行作为一个单独的帧传递到管道中的下一个处理器。 LengthFieldPrepender 从继承关系可以看出来,这是一个可以处理收、发的处理器 其他编解码器 maven依赖: 插件依赖: proto文件 可以看到,返回的就是我们在proto文件中

Sudo_Wang的学习记录 1229

Netty源码分析-字节序列(端序和小端序)

在网络传输的过程中,字节存在俩种序列方式,即大端序和小端序。 举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。 大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。 小端字节序:低位字节在前,高位字节在后,即以0x1122形式储存。 咱们拿一个数字886来举例子: 888的二进制为: 【0000 0000】 【0000 0000】【000...

大新博客 3265
上一篇: netty粘包拆包之LengthFieldBasedFrameDecoder解码器
下一篇: netty零拷贝之CompositeByteBuf
wenyixicodedog
博客等级 码龄8年 87粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值