作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个转换是从原来的吗?
uint8_t fletcher8( uint8_t *data, uint8_t len )
{
uint8_t sum1 = 0xff, sum2 = 0xff;
while (len) {
unsigned tlen = len > 360 ? 360 : len;
len -= tlen;
do {
sum1 += *data++;
sum2 += sum1;
tlen -= sizeof( uint8_t );
} while (tlen);
sum1 = (sum1 & 0xff) + (sum1 >> 4);
sum2 = (sum2 & 0xff) + (sum2 >> 4);
}
/* Second reduction step to reduce sums to 4 bits */
sum1 = (sum1 & 0xff) + (sum1 >> 4);
sum2 = (sum2 & 0xff) + (sum2 >> 4);
return sum2 << 4 | sum1;
}
uint32_t fletcher32( uint16_t *data, size_t len )
{
uint32_t sum1 = 0xffff, sum2 = 0xffff;
while (len) {
unsigned tlen = len > 360 ? 360 : len;
len -= tlen;
do {
sum1 += *data++;
sum2 += sum1;
tlen -= sizeof( uint16_t );
} while (tlen);
sum1 = (sum1 & 0xffff) + (sum1 >> 16);
sum2 = (sum2 & 0xffff) + (sum2 >> 16);
}
/* Second reduction step to reduce sums to 16 bits */
sum1 = (sum1 & 0xffff) + (sum1 >> 16);
sum2 = (sum2 & 0xffff) + (sum2 >> 16);
return sum2 << 16 | sum1;
}
最佳答案
如何计算 tlen
值(value)
Actually I don't know what to do with the line: unsigned tlen = len > 360 ? 360 : len;
n(n+5)/2 × (216−1) < 232
uint32_t
。 .对于 4 位数据字和 8 位累加器,对应的值为 4,计算公式为
n(n+5)/2 × (24−1) < 28
uint32_t
对于
sum1
和
sum2
,那么你可以在溢出危险之前对 23927 个半字节求和,但在那之后,你需要对
sum1 = (sum1 & 0xf) + (sum1 >> 4)
形式进行多达 7 次归约。将其归结为
1
范围通过
0x1e
,您的原始算法执行此操作的方式。将其写为
(sum1 - 1)%0xf + 1
可能更有效.在这种情况下,您甚至可以将范围从 1 到 15 更改回 0 到 14,将总和初始化为 0 并将减少写为
sum1 %= 0xf
.除非您需要与使用其他范围的实现兼容。
关于c - 将 Fletcher 校验和从 32 位重制为 8 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8925018/
我正在尝试扩展我关于 Web 请求及其与外部应用程序通信的方式的 JavaScript 知识。我想知道是否可以利用 xhr 对象来制作基本的 sqlmap 替代方案(*SQLmap 是一个利用 SQL
我正在使用 BlueJ 做一个 Java 类(class)作业。我们需要向基于文本的游戏 Zuul 添加新功能。我决定开始研究库存和元素系统。我很难找到最好的方法来做到这一点,所以我只是即兴发挥。这是
我正在尝试查看如何重新绑定(bind)词法绑定(bind),或者重新定义关闭 lambda。 next-noun 的预期用法只是不带参数地任意多次调用它。它应该从列表中返回一个随机名词,但直到列表用完
我是一名优秀的程序员,十分优秀!