news 2026/1/26 12:40:09

学习笔记:深入理解 VarInt 与二进制协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
学习笔记:深入理解 VarInt 与二进制协议

我们经常会在代码中使用到字节类型进行数据的传输,又或者说在计算机中数据本身就是由一个个字节组成,但往往数据的传输会有部分数据是无用的,这次深入探究一下在socket中如何利用VarInt高效传输字节数据。

一、什么是VarInt?

VarInt(Variable-Length Integer)是一种变长整数编码方式,旨在使用最小的字节数存储整数。一般为1~5个字节,而其特点就是数值越小,所占用的字节也就越小。

在Java中一个int类型固定需要使用4个字节进行传输,无论是多小的数据,均产生4个字节,例如1在Java中表示为00000000 00000000 00000000 00000001而非00000001,因此在数据传输时会造成宽带的浪费,为了极致压缩传输数据可以使用varint进行压缩,将数字1的4个字节压缩为1个字节0x01

二、VarInt数据结构

VarInt不同与正常的字节,它将每一个字节拆分为两个部分:

  • 最高位(MSB,Bit 7)为标志位,一般称之为Flag,当最高位为1时,表示后面还有数据,为0时第代表这是最后一个字节。
  • 低7位(Bits 0-6)为数据位,一般称之为Payload,这里存储实际的数值片段。

三、VarInt运算逻辑

这里使用Java进行代码编写,其它语言同理。

编码:int转VarInt

publicvoidwriteVarInt(DataOutputStreamout,intvalue){while(true){// 1. 检查是否只剩最后 7 位// ~0x7F 是高位掩码,用于检查高位是否还有值if((value
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/20 16:00:53

YimMenu实践手册:解锁GTA5全新游戏体验的终极方案

YimMenu实践手册:解锁GTA5全新游戏体验的终极方案 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …

作者头像 李华
网站建设 2026/1/17 18:20:03

HDRNet完整指南:5分钟掌握深度学习图像增强核心技术

HDRNet完整指南:5分钟掌握深度学习图像增强核心技术 【免费下载链接】hdrnet An implementation of Deep Bilateral Learning for Real-Time Image Enhancement, SIGGRAPH 2017 项目地址: https://gitcode.com/gh_mirrors/hd/hdrnet HDRNet是一个基于深度双边…

作者头像 李华
网站建设 2026/1/18 17:08:51

AI印象派艺术工坊技术深度:算法原理与实现解析

AI印象派艺术工坊技术深度:算法原理与实现解析 1. 技术背景与问题定义 在数字图像处理领域,非真实感渲染(Non-Photorealistic Rendering, NPR)一直是连接计算机视觉与艺术创作的重要桥梁。传统基于深度学习的风格迁移方法虽然效…

作者头像 李华
网站建设 2026/1/25 18:56:17

FunASR语音识别优化:时间戳功能实现与应用

FunASR语音识别优化:时间戳功能实现与应用 1. 引言 随着语音识别技术在会议记录、视频字幕生成、语音转写等场景中的广泛应用,用户对识别结果的精细化需求日益提升。其中,时间戳信息作为连接音频流与文本内容的关键元数据,已成为…

作者头像 李华
网站建设 2026/1/21 0:01:25

告别繁琐组装:MitoHiFi让线粒体基因组分析变得如此简单

告别繁琐组装:MitoHiFi让线粒体基因组分析变得如此简单 【免费下载链接】MitoHiFi Find, circularise and annotate mitogenome from PacBio assemblies 项目地址: https://gitcode.com/gh_mirrors/mi/MitoHiFi 还在为复杂的线粒体基因组组装而头疼吗&#x…

作者头像 李华
网站建设 2026/1/18 5:04:58

高精度Alpha通道提取|CV-UNet大模型镜像在图像处理中的应用

高精度Alpha通道提取|CV-UNet大模型镜像在图像处理中的应用 1. 技术背景与核心价值 图像抠图(Image Matting)是计算机视觉中一项关键的细粒度图像分割任务,其目标是从复杂背景中精确分离前景对象,并生成高质量的透明…

作者头像 李华