我需要为网络上的图像文件生成etags.我想到的一个可能的解决方案是计算图像文件的CRC,然后将它们用作etag.
这将要求每次有人在服务器上请求图像时计算CRC,因此非常重要的是可以快速完成.
那么,生成CRC的算法有多快?或者这是一个愚蠢的想法?
如果我有子串 S 0 , S 1 , ... S n与计算的 CRCs C 0 , C 1 , ... C n,我是否能够确定连接输入 S 0 S 1的 CRC C 0...n ...S n比线性处理整个字符串的效率要高得多?
显然, C 0...n = CRC(S 1...n,用 C 0初始化),但我想知道 C 0...n = f(C 0 ,C 1 ,... C n ) 用于某些具有 O(n) 复杂度的 f() 而不是 O(|S 0 S 1 ...S n |)。
我尝试使用此代码计算ANSI CRC16多项式(0x8005)
import crcmod
crc16 = crcmod.mkCrcFun(0x8005, 0xffff, True)
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息
ValueError:多项式的阶数必须为8、16、24、32或64
我在C中收到一段代码,用来计算字节数组的CRC8值.我需要将它翻译成Java.
这里是C代码:
CRC_POLYNOM = 0x9c;
CRC_PRESET = 0xFF;
unsigned int CRC = CRC_PRESET;
for (i = 0; i < Len; i++)
{
crc ^= FRAME[i];
for (j = 0; j < 8; j++)
{
if (crc & 0x01)
crc = (crc >> 1) ^ CRC_POLYNOM;
else
crc = (crc >> 1);
}
}
Run Code Online (Sandbox Code Playgroud)
我在Java中设法做到的是:
public static long calculateCRC8(byte[] b, int len) {
long crc = CRC_PRESET;
for (int i = 0; i < len; i++) { …Run Code Online (Sandbox Code Playgroud) 当我们为 Spark Streaming 应用程序设置检查点目录时,它会生成一个这样的目录:
root@55330815baa7:/usr/local/spark/checkpoint# ll
total 184
drwxr-xr-x 6 root root 4096 May 25 16:35 ./
drwxr-xr-x 18 500 500 4096 May 25 16:19 ../
drwxr-xr-x 2 root root 4096 May 25 16:19 643d19eb-b24b-4664-a865-a263bdd97625/
drwxr-xr-x 2 root root 4096 May 25 16:34 71b2204c-8762-4d75-bb34-f9b1b7a9b530/
drwxr-xr-x 2 root root 4096 May 25 16:19 c946e058-220e-4ae5-8db2-393c00b845d0/
-rw-r--r-- 1 root root 9658 May 25 16:35 checkpoint-1464193230000
-rw-r--r-- 1 root root 84 May 25 16:35 .checkpoint-1464193230000.bk
-rw-r--r-- 1 root root 84 May 25 16:35 .checkpoint-1464193230000.crc …Run Code Online (Sandbox Code Playgroud) 我正在研究将CRC校验和用作哈希时的冲突可能性。我知道如何计算均匀分布的哈希算法的冲突可能性(这意味着获得随机输入数据的所有可能校验和的机会是相同的)。
我不知道的东西(我在网络上找不到):
PS:我知道将CRC用作哈希时的限制,因此这不是此问题的一部分。
大家好,我正在为我的 NFC 项目完成固件的最后一部分。我正在尝试与使用 NXP MF0ULx1 MIFARE Ultralight EV1 - 非接触式票证 IC 的 AD-740 NFC 标签进行通信。我使用的 NFC 阅读器是 NXP 的 CLRC663。我正在通过 SPI 使用 PSOC5LP 设备控制 NFC 阅读器。
现在你已经掌握了所有的背景信息,我现在要问我的问题。
对于这个特定的NXP 读取方法,我需要将 Cmd 和 Addr 编码为长度为 2 个字节的 CRC。我可以链接到的数据表引用了 ISO/IEC 14443。在谷歌中搜索将我带到维基百科页面,然后显示 PDF 的四个部分。我假设我需要第 4 部分传输协议部分。唯一的问题是此 PDF 被付费墙阻止。这是故意的吗??
在互联网上四处搜寻我发现了一些代码示例,这些示例可能会阻止我购买 170 美元的 PDF 只是为了查看多项式...
代码示例 1 - 我可以在评论中发布源链接。没有代表在主要职位上做这件事。
// Calculate an ISO 14443a CRC. Code translated from the code in
// iso14443a_crc().
func ISO14443aCRC(data []byte) [2]byte {
crc := uint32(0x6363)
for _, bt …Run Code Online (Sandbox Code Playgroud) 据说CRC(循环冗余校验和)可以检测到小于r +1位的突发错误,其中r是多项式的次数。此外,以1 – 2 -r的概率检测到长度大于r + 1位的突发。
有人可以指导我提供相同的证明吗?
我有一个十六进制值数组。我已经预先计算了它的 CRC-CCITT (0x1d0f),它是:0xD7F2
我写了一个基于用 javascript 编写的工作 crc alghoritm 的算法,我用相同的数据条目进行了测试(计算在这里)。
我用 C 重写了它,但不幸的是,我得到的输出与预期不同,实际上:0xB5DB.
所以,我的问题是:算法内部可能有问题吗?错误的数据类型会导致问题吗?
这是一个大小为 2 的简单数组的示例。计算器的计算结果是 0x9770,我的算法的结果是 0x5D80。
计算算法:
unsigned int crcTest[2] = {0xB6FE,0x8C4A};
int main (void){
unsigned int crc = doCrc(crcTest,2);
printf("Correct CRC16-CCITT is: 0x9770\n");
printf("Calculated result func : 0x%X\n", crc);
return 0;
}
unsigned int doCrc(unsigned int *data, int size)
{
int i, j;
unsigned int crc = 0x1d0f;
for (i = 0; i < size; i++){
unsigned int xr = data[i] << …Run Code Online (Sandbox Code Playgroud) crc ×10
c ×2
c# ×2
crc32 ×2
java ×2
python ×2
apache-spark ×1
calculation ×1
crc16 ×1
distribution ×1
hash ×1
networking ×1
nfc ×1
proof ×1
psoc ×1
python-3.x ×1
rfid ×1
scala ×1
visual-c++ ×1