0x7f 有什么特别之处?

2024-03-13

我正在阅读 avro 格式规范并试图了解其实现。下面是解码的方法长值 https://avro.apache.org/docs/1.8.2/spec.html#schema_primitive:

  @Override
  public long readLong() throws IOException {
    ensureBounds(10);
    int b = buf[pos++] & 0xff;
    int n = b & 0x7f;
    long l;
    if (b > 0x7f) {
      b = buf[pos++] & 0xff;
      n ^= (b & 0x7f) << 7;
      if (b > 0x7f) {
        b = buf[pos++] & 0xff;
        n ^= (b & 0x7f) << 14;
        if (b > 0x7f) {
          b = buf[pos++] & 0xff;
          n ^= (b & 0x7f) << 21;
          if (b > 0x7f) {
            // only the low 28 bits can be set, so this won't carry
            // the sign bit to the long
            l = innerLongDecode((long)n);
          } else {
            l = n;
          }
        } else {
          l = n;
        }
      } else {
        l = n;
      }
    } else {
      l = n;
    }
    if (pos > limit) {
      throw new EOFException();
    }
    return (l >>> 1) ^ -(l & 1); // back to two's-complement
  }

问题是为什么我们总是检查是否0x7f小于我们刚刚读取的字节?


这是一种位打包形式,其中每个位的最高有效位byte用于确定是否另一个byte应该阅读。从本质上讲,这允许您以比通常需要的更少的字节数对值进行编码。但需要注意的是,如果数量很大,则超过normal需要的字节数。因此,当使用较小的值时,这是成功的。

回答你的问题,0x7F is 0111_1111以二进制形式。可以看到最高有效位被用作标志位。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

0x7f 有什么特别之处? 的相关文章

随机推荐

  • 我无法在 androidx.appcompat:appcompat:1.1.0 上使用 API 反射

    我的 androidx appcompat appcompat 1 1 0 有问题 这是一个新问题 因为在 androidx appcompat appcompat 1 0 2 上它不存在 我有一个代码 使用反射从微调器获取 mPopup
  • 如何保留添加到 jQuery 匹配集中的项目的顺序?

    我正在尝试按特定顺序将元素添加到 jQuery 对象 但是 结果集的排序方式与 DOM 树相同 例如 div one div span two span p three p var result span add p add div 我想要
  • 无法创建常量值 - 仅限原始类型

    两个简单的查询 异常发生在 matchings Any u gt product ProductId u ProductId 怎么了 如果我写true相反 一切都很好 var matchings from match in db match
  • Zend Framework 中的 html_entity_decode 等效项

    我可以看到 HTML 转义字符串打印 但如何将其解码为纯文本呢 已经找这个好几个小时了 Zend Framework 是否有相反的东西 this gt escape 可以在视图文件中使用吗 Zend Framework 中的 unescap
  • 在客户端和服务器之间共享 TypeScript 类

    我有一个用 TypeScript 编写的 Node js 项目 在我的项目中 我有一个名为 public 的文件夹 其中包含客户端代码和 HTML 还有一个名为classes ts 的文件 该文件应该共享到服务器端 问题是我需要在类声明之前
  • 将 Autofac 与 SignalR 结合使用时出现范围错误

    我正在尝试注入HttpContextBase在我的 SignalR 中心 public class EventHub Hub IDisconnect private readonly HttpContextBase httpContextB
  • PySphere 和 PyVmomi 之间有什么区别?

    我需要编写 python 脚本来自动配置在 ESX ESXi 主机上运行的虚拟机的时间 我不知道该使用哪个 API 我能够找到 VMWare API 的 python 绑定 即 PySphere 和 PyVmomi 谁能解释一下它们之间有什
  • Kubernetes资源文档中的M和Mi有什么区别?

    阅读 Kubernetes 文档 https kubernetes io docs concepts configuration manage resources containers https kubernetes io docs co
  • 使用 Microsoft Graph 列出 Microsoft Sharepoint 站点

    我正在使用 Microsoft Graph 使用 Microsoft OneDrive 和 Microsoft Sharepoint 据我了解 从登录用户获取文件列表的 URLOneDrive is v1 0 me drive root c
  • 如何隐藏mapbox-gl中所有打开的标记弹出窗口?

    我找不到隐藏所有打开的标记弹出窗口或什至检查标记弹出状态的方法 我会想getPopup isOpen 可以让你检查状态 并且getPopup remove 在迭代某个数组中所有存储的标记时运行 将完成您在这里所需的操作
  • Minimax/ Alpha beta 剪枝移动顺序?

    我读过 例如 http radagast se othello Help order html http radagast se othello Help order html 首先搜索每个级别的最佳动作 可以使用迭代加深找到 使得搜索速度
  • 如何在heroku中运行“Rails Runner”?

    这就是我想做的 查找是否有人在推特上发布过有关所提供的特定课程的推文 如果有人确实发布了相关推文 我想将该推文保存到我的推文模型中 然后在相应的课程页面中显示该推文 这些脚本通过运行在本地运行rails runner get tweets
  • transitiveMemberOf $filter 仅当您是直接成员时才有效

    我正在尝试使用 Graph 来查明用户是否是某个组的传递成员 例如 Bob 是 Marketing 的成员 而 Marketing 是 Company 的成员 Bob 是 Company 的成员吗 If I do me transitive
  • 如何在 FastAPI 的 CORS 中间件中正确使用正则表达式?

    我有一个使用 FastAPI 后端和 Next js 前端的应用程序 在具有稳定来源的开发和生产中 我能够毫无问题地使用 CORSMiddleware 不过 我已经使用 Vercel 部署了 Next js 前端 并且希望利用 Vercel
  • 提取“/”前后的字符

    我试图提取 之前和之后的字符 但没有成功 句子是 XXXX YYY ZZZ AV HAHEHRS 3061 SDDW ASDA DDSF SAO JOSE DOS CAMPOS SP CEP 00000 000 输出应该是 SAO JOSE
  • PDFBox:处理非常大的 PDF。

    我正在处理一些非常大的 PDF 有些大小超过 7GB PDF 最多有 20 000 页和许多整页彩色图像 我想使用 PDFBox 来处理 PDF 但由于大小 当我尝试打开 PDF 时 出现 OutOfMemoryError 我正在使用版本
  • 如何用一个元素创建 3D 透视图像?

    I have a code that given an image does the effect of perspective in 3D This is the result 这是代码 thumb margin 100px perspe
  • 混合 http/https 站点

    到目前为止 我的 https 部署通常涉及使用 https 对整个站点进行简单锁定 并在 Web 服务器上提供 http 到 https 的重定向 我现在计划拥有一个 ASP NET MVC 站点 在云上 其中包含 http 和 https
  • Firebase 身份验证令牌过期时间

    我刚刚升级到新版本的 Firebase 但找不到在哪里可以设置 Firebase 身份验证令牌的过期时间 它曾经位于 Firebase 旧布局中的身份验证部分下 我将其设置了 1 年 Firebase 还有这个吗 如果您继续使用 Fireb
  • 0x7f 有什么特别之处?

    我正在阅读 avro 格式规范并试图了解其实现 下面是解码的方法长值 https avro apache org docs 1 8 2 spec html schema primitive Override public long read