零填充缓冲区/文件的 CRC32 计算

2024-05-04

如果我想计算大量连续零字节的 CRC32 值,在给定零运行长度的情况下,是否可以使用恒定时间公式?例如,如果我知道我有 1000 个字节全部用零填充,有没有办法避免 1000 次迭代的循环(只是一个例子,对于这个问题,实际的零数量是无限的)?


您可以计算应用的结果n归零不是在 O(1) 时间内,而是在 O(logn) 时间。这是在 zlib 中完成的crc32_combine()。构造一个二进制矩阵来表示将单个零位应用于 CRC 的操作。 32x32 矩阵将 32 位 CRC 乘以 GF(2),其中加法由异或 (^) 代替,乘法由与 (&) 逐位代替。

然后可以将该矩阵平方以获得两个零的运算符。将其平方以获得四个零的运算符。第三个平方得到八个零的运算符。依此类推。

现在可以根据数字中的一位将这组运算符应用于 CRCn您要计算其 CRC 的零位。

如果您碰巧知道您将经常应用恰好那么多的零,您可以预先计算任意数量的零位的结果矩阵运算符。那么它只是一个向量与一个矩阵相乘,实际上是 O(1)。

您不需要使用pclmulqdq此处另一个答案中建议了说明,但如果您有的话,速度会更快一些。它不会改变操作的 O()。

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

零填充缓冲区/文件的 CRC32 计算 的相关文章

  • Dijkstra 算法不生成最短路径?

    我正在使用 Dijkstra 算法解决最短路径问题 我遇到了麻烦 因为该算法应该提供最短路径 但运行该算法后 我手动得到了一条短路路径 这只是该算法的副产品吗 我尝试生成的路径是从 a gt z 这是我通过应用该算法得到的路径 在我访问的每
  • 所有可能的骑士在普罗梅拉的棋盘上移动

    是否有可能用马从初始位置 I J 绕过大小为 N N 的棋盘 并且只访问每个方格一次 define A True A I J false active proctype method bit I 4 bit J 3 bit K 1 bit
  • 为什么《破解编码面试》这个例子的时间复杂度是O(k c^k)?

    该问题来自 破解编码面试 第 6 版 问题 V1 11 以下代码打印长度为 k 的所有字符串 其中字符 是按排序顺序排列的 它通过生成所有长度的字符串来做到这一点 k 然后检查每个是否已排序 什么是运行时间 package QVI 11 P
  • 直观地执行不同的排序算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 快速排序应用程序中这些交换代码行的目的是什么?

    我试图理解快速排序的实现或应用程序以找到第 k 个最小元素 这是我试图理解的代码 public int quicksort int a int start int end int k if start lt end int pivot pa
  • 如何设计一种算法来计算倒数式数学数字难题

    我一直想这样做 但每次我开始思考这个问题时 它的指数性质都会让我大吃一惊 我希望能够理解的问题解决器和代码是针对倒计时数学问题的 给定一组数字 X1 到 X5 计算如何使用数学运算将它们组合起来生成 Y 您可以应用乘法 除法 加法和减法 那
  • 更合适地说插入未排序动态数组的摊销 O(1) 与 O(n) ?

    这属于 stackoverflow com help on topic 中的 软件算法 在本例中 是一种将项目添加到动态未排序数组的软件算法 This is chart we made in class about the runtimes
  • 一种良好且简单的随机性测量方法

    获取一长整数序列 例如 100 000 个 并返回序列随机性的测量值的最佳算法是什么 该函数应返回单个结果 如果序列并非完全随机 则返回 0 如果完全随机 则返回 1 如果序列有点随机 它可以给出介于两者之间的东西 例如0 95 可能是一个
  • 素数生成器算法

    我一直在尝试解决素数生成算法的SPOJ问题 这是问题 彼得想为他的密码系统生成一些素数 帮助 他 你的任务是生成两个给定之间的所有素数 数字 Input 输入以单行中测试用例的数量 t 开始 t Output 对于每个测试用例 打印所有素数
  • 线段树java实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 你知道 二进制 的良好实现吗线段树 http en wikipedia org wiki Segmen
  • 简单的排名算法

    我需要创建一个民意调查 按照项目的好坏顺序创建一个排名列表 我打算向每个用户展示两个项目 让他们选择一个他们认为更好的项目 然后多次重复这个过程 它有点类似于您在社交网络电影 我应该如何根据收到的答案对项目进行排名 看着那 这ELO国际象棋
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • 如何将多边形放入另一个多边形内[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有两个多边形 如下图所示 左边是 粗多边形 右边是 最终多边形 现在 我正在寻找算法来将 最终多边形 拟合到 粗糙多边形 内 并具有
  • 什么是“朴素”算法,什么是“封闭式”解决方案?

    我有一些关于描述算法时使用的术语语义的问题 首先 朴素 算法是什么意思 这与给定问题的其他解决方案有何不同 解决方案还可以采取哪些其他形式 其次 我听到很多人提到 封闭式 解决方案 我也不知道这意味着什么 但在尝试解决递归关系时经常会出现
  • 当给定块大小时反转单链表

    有一个单连接链表 并给出了块大小 例如 如果我的链表是1 gt 2 gt 3 gt 4 gt 5 gt 6 gt 7 gt 8 NULL我的块大小是4然后反转第一个4元素 然后是第二个 4 个元素 问题的输出应该是4 gt 3 gt 2 g
  • 重写修改后的 goto 语义的算法

    我有一大堆使用旧的自行设计的脚本语言编写的遗留代码 我们将它们编译 翻译成 javascript 该语言有条件跳转 跳转到标签 与普通 goto 语句的区别在于 不可能向后跳转 该语言中没有嵌套的 if 语句或循环 由于 javascrip
  • 为什么这个算法的Big-O复杂度是O(n^2)?

    我知道这个算法的大O复杂度是O n 2 但我不明白为什么 int sum 0 int i 1 j n n while i lt j sum 即使我们设定了j n n一开始 我们在每次迭代期间递增 i 并递减 j 因此最终的迭代次数不应该比n
  • 优化计算中使用的 # 个线程的算法

    我正在执行一个操作 我们将其称为CalculateSomeData CalculateSomeData 在连续的 代 中运行 编号为 1 x 整个运行中的代数由CalculateSomeData 的输入参数固定 并且是先验已知的 完成一次生
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 无法理解Peterson算法的正确性

    我在这里讨论彼得森算法的一个场景 flag 0 0 flag 1 0 turn P0 flag 0 1 turn 1 while flag 1 1 turn 1 busy wait

随机推荐

  • EntityFramework 6 中的 IDbCommandInterceptor 线程安全吗

    使用 DbInterception add 方法注册时 IDbCommandInterceptor 实例是否被视为线程安全 我已经实现了一个符合 IDbCommandInterceptor 接口的类 并且正在跟踪调用其中一个执行方法时命令的
  • Firemonkey - 更新视觉组件

    我们从版本 1 开始就使用 Firemonkey 但仍然发现更新当前在屏幕上可见的组件很困难 在 Firemonkey 中请求重画的 方式 有很多 也许太多了 应用样式 ApplyStyle 事件 主要是当它在屏幕上可见时 请求 repai
  • 这是一个有效的浮点数比较,它占了一定的小数位数吗?

    我正在编写一个扩展方法来使用一组小数点 有效数字 来比较两个浮点数 以确定它们是否相等而不是容差或百分比差异 浏览有关浮动比较的其他问题 我看到了复杂的实现 我是否过于简单化了或者这是否有效
  • CA1704 - 微软似乎屏蔽了“Multi”这个词?

    public class MultiSomething CA1704 IdentifiersShouldBeSpelledCorrectly 当我运行代码分析时 我收到错误 因为 Microsoft 无法识别 Multi 一词 想想他们在I
  • Emacs:结合 isearch-forward 和 center-top-bottom

    预先非常感谢您的帮助 在 Emacs 中 我喜欢使用 iseach forward C s 但如果突出显示的字体单词位于屏幕中间而不是最底部的中心 我会更喜欢它 我发现自己不断地这样做 C s foo C s C s C s 哦 这就是我一
  • Javascript:从已实例化的对象与原型创建对象

    我有一个相当学术的问题 并不特别适用于我正在做的任何事情 我只是真的想知道答案 假设我们在全局命名空间中有一个简单的对象定义 如下所示 TestObject function 它的原型中添加了一个方法 可以实例化为新对象本身 TestObj
  • Android ListView中心选择

    我有一个 ListView 显示与搜索最接近的单词匹配 例如 如果我搜索 hi 我会在 ListView 中得到以下结果 hi hi five hi five high强调 我在用 ListView setSelection wordLis
  • 在Spark的客户端模式下,驱动程序需要网络访问远程执行程序?

    使用火花时在客户端模式 例如yarn client 运行驱动程序的本地计算机是否直接与运行远程执行程序的集群工作节点通信 如果是 是否意味着机器 运行驱动程序 需要具有对工作节点的网络访问权限 那么master节点向集群请求资源 并将wor
  • H2 中的 IF 函数用于 MySQL 兼容性

    我正在使用 H2 具有 MySQL 兼容模式 针对我们使用 MySQL 的软件编写一些自动化测试 不幸的是 H2 似乎没有IF我们的许多查询都使用该函数 除了使用 DECODE 之类的东西重写我们的应用程序查询之外 它们是创建 if 函数
  • Google Places API 上的寻呼返回状态 INVALID_REQUEST

    我正在使用 Google Place API 进行地点搜索 https developers google com places documentation search https developers google com places
  • 实体框架不查询派生类 - DbOfTypeExpression 中的错误

    我有一个基类和两个派生类 每个派生类都实现相同的类型作为属性 唯一的区别是属性名称 遗憾的是我对类设计没有太大影响 gt 它们是从 wsdl 文件生成的 然后我在 BaseType 上有一个属性来封装公共属性 计划是在我的网络视图等中使用此
  • 如何在 Angular 6 中过滤复杂结构化的 Json 数据

    我有一个复杂的结构化 json 数据 需要在我的 Angular 6 应用程序中应用高级过滤 JSON 数据 StudentId 1 StudentName Student1 Sex M Programs StudentId 1 Progr
  • 将 ActiveX Com 组件与 Node.js 一起使用。是否可以

    有没有办法将任何ActiveX com组件与nodejs一起使用 实际上 我永远不需要这个 但我在 Windows 上运行 nodejs 并尝试发送 ping 请求而不分叉新进程 Windows 不存在这样的模块 由于存在一些 Active
  • 从命令行将绑定或参数传递给 ERB

    我最近一直在从命令行使用 erb 我想制作一个非常简单的 erb 模板 例如以下内容 Hello My name is I hope your day is 如果我跑的话这有效 erb T thatfile erb 我想做的是name an
  • 每次更改工作表时运行宏

    我对宏还很陌生 每次更新 更改或其他任何操作时 我都需要在工作表上运行一些代码 这是我需要运行的代码 我怎样才能做到这一点 Sub UnMergeFill Dim cell As Range joinedCells As Range For
  • 分割具有最大字符数限制的字符串

    我试图将一个字符串拆分为许多字符串 列表 每个字符串都有最大字符数限制 假设我有一个 500 个字符的字符串 并且我希望每个字符串最多有 75 个字符 那么就会有 7 个字符串 而最后一个字符串不会有完整的 75 个字符 我尝试了在 sta
  • 如何处理 UICollectionView CompositionalLayout 中的空项目部分

    我正在尝试使用具有多个部分的组合布局制作集合视图 但如果部分中有空项目我该如何处理 如果项目为空 我不想显示该部分 UICollectionViewCompositionalLayout section env gt NSCollectio
  • 获取字典中相似值的键的最有效方法

    我有一个对象字典 I have thousands of objects in my real world scenario dic k1 obj1 k2 obj2 k3 obj3 keys are string objs are MyOb
  • 带有输出文件和屏幕输出的 sqlcmd

    我使用 sqlcmd 执行一些命令行批处理 bat 如下所示 sqlcmd i Scripts STEP01 sql o PROCESS log S MYSERVER E d MYDATABASE 我需要一个输出文件 当前有效 以及通过屏幕
  • 零填充缓冲区/文件的 CRC32 计算

    如果我想计算大量连续零字节的 CRC32 值 在给定零运行长度的情况下 是否可以使用恒定时间公式 例如 如果我知道我有 1000 个字节全部用零填充 有没有办法避免 1000 次迭代的循环 只是一个例子 对于这个问题 实际的零数量是无限的