- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
早上好!
对于无线应用程序,我需要实现各种 CRC 计算。根据规范,CRC 计算应作为移位寄存器实现。 See EPC Spec
Ross N. Williams 有一个名为“CRC 错误检测算法的无痛指南”的优秀指南,其中包括我想使用的通用 C 实现。 (Link including the SourceCode)
问题在于包含的函数仅将完整的字节作为输入。我的消息可以有不同的长度。
这是添加一个字节的代码:
void cm_nxt(p_cm,ch)
p_cm_t p_cm;
int ch;
{
int i;
ulong uch = (ulong)ch;
ulong topbit = BITMASK(p_cm->cm_width - 1);
if (p_cm->cm_refin) uch = reflect(uch, 8);
p_cm->cm_reg ^= (uch << (p_cm->cm_width - 8));
for (i = 0; i <8; i++) {
if (p_cm->cm_reg & topbit)
p_cm->cm_reg = (p_cm->cm_reg << 1) ^ p_cm->cm_poly;
else
p_cm->cm_reg <<= 1;
p_cm->cm_reg &= widmask(p_cm);
}
}
现在我想实现一个函数,只是在计算中添加一位。我尝试了以下代码:
void cm_nxt_bit(p_cm, ch)
p_cm_t p_cm;
int ch;
{
ulong uch = (ulong)ch;
ulong topbit = BITMASK(p_cm->cm_width - 1);
if (p_cm->cm_refin) uch = reflect(uch, 8);
p_cm->cm_reg ^= (uch << (p_cm->cm_width - 8));
if (p_cm->cm_reg & topbit)
p_cm->cm_reg = (p_cm->cm_reg << 1) ^ p_cm->cm_poly;
else
p_cm->cm_reg <<= 1;
p_cm->cm_reg &= widmask(p_cm);
}
不幸的是,它没有按预期工作。你能帮我实现这样的功能吗?
最佳答案
您需要将一位放在寄存器的顶部,就像其他代码将一个字节放在寄存器的顶部一样。假设 ch
必须是 0
或 1
,这样您要添加的位就是 ch
的底部位>,然后您需要将 uch
向上移动 cm_width-1
,而不是 cm_width-8
,然后再对寄存器进行异或运算。
也摆脱了 reflect
的使用。一位的反射(reflect)是同一个位。
你也可以看看我的crcany code ,它在 C 中为任何 CRC 定义生成 CRC 代码,包括一个例程,如果它的长度不是八位的倍数,它将计算流的最后 1 到 7 位的 CRC。
关于C 中的 CRC 计算 - 向 Ross Williams 库添加单位函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42155941/
我正在实现 lock-free queue Anthony Williams 在“C++ Concurrency in Action”中描述的内容。我将其作为 libcds 的新容器进行测试.弹出和推
请问Esau-Williams 算法在哪些情况下可能有用?我知道它是用来解决CMST问题的,但是我找不到任何可能出现CMST问题的情况。 最佳答案 根据 Wikipedia ,“CMST问题在网络设计
我最近正在开发一个 android 应用程序,我需要使用图表显示一些统计信息。我搜索了 android-arsenal.com,发现了一堆图表库,包括我选择的 William 图表,因为它看起来构建得
我正在尝试将 William Charts 用于我的 Android Studio 项目,但似乎无法导入它。我从 github 下载了 WilliamChart-master zip ,并尝试导入它。
在研究mysql项目时,我未能将JOIN的知识应用到实际情况中,查询本身的逻辑存在问题。 我的目标是进行一个需要 6 个表进行交互的查询。 第一个连接表批处理: CREATE TABLE `books
早上好! 对于无线应用程序,我需要实现各种 CRC 计算。根据规范,CRC 计算应作为移位寄存器实现。 See EPC Spec Ross N. Williams 有一个名为“CRC 错误检测算法的无
假设我正在使用 R ( Bretz et al. (2011) Multiple Comparisons with R. Chapman & Hall/CRC) 的 multcomp 包进行剂量 re
使用regex或Stringtokenizer来分隔此字符串中的作者和标题是否更好: William Faulkner - 'Light In August' 这是最简单的正则表达式吗? Patter
我需要将这样的学生列表分为ID,姓名和分数。这是一个练习,因此不允许使用字符串,只能使用char 0001 William Bob 8.5 0034 Howard Stark 9.5 0069 Nat
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一名优秀的程序员,十分优秀!