如果给出了给定的代码+ CRC字符串,有人知道如何找出CRC算法吗?
我有几个字符串由代码+匹配的CRC组成,但不知道如何计算有问题的CRC,以便我可以生成更多的代码字符串.以下是一些示例(16位代码+ 4位CRC):
0010101000011101 + 0000 0010101000011111 + 0001 1000110011101101 + 0001 0000000000000100 + 0010 0011100011001110 + 0011 1000110011101110 + 0100 0001011110101100 + 0100 0010101000011110 + 0101 0011100011001101 + 0110 0001011110101111 + 0111 0011100011001100 + 1001 0011100011001111 + 1010 0001011110101101 + 1011 0000000000001000 + 1011 0000111100001101 + 1100 0000000000001100 + 1100 1111111111111111 + 1101 1000110011101111 + 1101 1000110011101100 + 1110 0001011110101110 + 1110 1111111100001101 + 1110 0010101000011100 + 1111
这些代码来自RF(433MHz)发送器,如X10产品.
我不确定这是CRC还是它是什么,但至少它是以某种方式从这些代码字符串中计算出来的.
有人可以帮忙吗?
更新:
RE:找到规格我也认为是最好的解决方案,但由于这不是选项,我需要以某种方式强制校验和计算.
这是问题,我没有规格,我无法在任何地方获得它们.我已经尝试了几种不同的校验和计算方法而没有结果,没有办法比较输入字符串找出它们的共同点,这样就得到了算法
是否有CRC库,使用户不仅可以检测错误,还可以纠正错误?我正在寻找一个C/C++或Java库,理想情况下是开源的.
我需要与 RS232 设备通信,我没有可用的规格或信息。
我发送一个 16 字节的命令并返回一个 16 字节的结果。最后一个字节看起来像某种 crc 或校验和,我试过使用这个http://miscel.dk/MiscEl/miscelCRCandChecksum.html没有运气。
任何人都可以对 crc/校验和算法进行逆向工程?以下是使用 RS-232 监控程序捕获的一些数据:
01 80 42 00 00 00 00 00 00 00 00 00 00 00 01 B3
01 80 42 00 00 00 00 00 00 00 00 00 00 00 02 51
01 80 42 00 00 00 00 00 00 00 00 00 00 00 03 0F
01 80 42 00 00 00 00 00 00 00 00 00 00 00 04 8C …Run Code Online (Sandbox Code Playgroud) 我将从我自己的类中定义的一些对象保存到File.(保存流数据).
这一切都很好,但我希望能够在File中存储该文件的CRC校验和.
然后,每当我的应用程序尝试打开文件时,它都可以读取内部存储的CRC值.
然后检查实际文件,如果文件的CRC与内部存储的CRC值匹配,我可以正常处理文件,否则显示错误消息,说文件无效.
我需要一些关于如何做到这一点的建议,我想我可以这样做:
问题是,只要在文件中更改了单个数据字节,就会导致CRC校验和完全不同 - 正如预期的那样.
我知道 CRC 是一个线性函数,这意味着 CRC(x xor y) = CRC(x) xor CRC(y),但我不知道如何证明 CRC 的这个属性。
有人有什么主意吗?
多谢!
我有一个问题,作为输入,我有一个大字节数组(通常> 1K 长度),它具有计算的 CRC32。我需要用不同的值替换一小部分数组,并重新计算 CRC。有没有一种有效的方法可以在不循环整个原始字节数组的情况下执行此操作?我怀疑在数学上可以将原始 CRC、要替换的字节、新字节作为输入,并使用循环大小只是要替换的字节数的算法来计算新的 CRC,但这超出了我的范围专业知识,因此,只是怀疑。谢谢,
我有一个包含大量文本文件的文件夹。每一个都被压缩并重几个千兆字节。我写了一段代码来拆分每个 gzip 文件的内容:每个 gzip 文件都用 打开gzip,然后读取每个指定的行块并将其写入一个新的 gzip 文件。
这是文件中的代码file_compression.py:
import sys, os, file_manipulation as fm
import gzip
def splitGzipFile(fileName, dest=None, chunkPerSplit=100, linePerChunk=4, file_field_separator="_", zfill=3
, verbose=False, file_permission=None, execute=True):
"""
Splits a gz file into chunk files.
:param fileName:
:param chunkPerSplit:
:param linePerChunk:
:return:
"""
absPath = os.path.abspath(fileName)
baseName = os.path.basename(absPath)
dirName = os.path.dirname(absPath)
destFolder = dirName if dest is None else dest
## Compute file fields
rawBaseName, extensions = baseName.split(os.extsep, 1)
if not str(extensions).startswith("."):
extensions = …Run Code Online (Sandbox Code Playgroud) 我试图找出如何计算任意 CRC 多项式的错误检测能力。
我知道有各种错误检测功能可能(或可能不)适用于任意多项式:
检测单个位错误:所有 CRC 都可以执行此操作,因为这仅需要 CRC 宽度 >= 1。
突发错误检测:所有 CRC 都可以检测大小等于其宽度的突发错误。
检测奇数位错误:CRC 与多项式的偶数项(这意味着完整二进制多项式中 1 位的偶数)可以做到这一点。
检测随机位错误(取决于帧大小):我有一个现成的 C 算法,可以计算给定 HD 和多项式的最大帧大小。我没有完全理解它,但它有效。
让我们假设一个 16 位 CRC 多项式 x¹?+x¹²+x?+1 = 0x11021。该多项式可以:
以上正确吗?
是否有额外的 CRC 错误检测功能?如果是,我如何检查(没有深入的数学知识)任意 CRC 多项式是否支持它们?
我使用 saveAsTextFile 方法以文本格式将 RDD 写入本地文件系统。在输出目录中,即使是 _SUCCESS 文件,每个零件文件也有一个 .crc 文件。
我只是在寻找避免生成这些元文件(尤其是 .crc)的 Hadoop/Spark 的任何内置功能或属性
我发现以下属性可以避免为 parquet 文件生成 _SUCCESS 文件和 .crc 文件,但为文本文件寻找类似的属性。
sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")
sc.hadoopConfiguration.set("parquet.enable.summary-metadata", "false")
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我需要使用这个设置计算一个 CRC-64到这个美妙的网站:http : //www.sunshine2k.de/coding/javascript/crc/crc_js.html
如您所见,我需要“反射输入”,这意味着我需要反转任何字节的位顺序(有点烦人)。目前,我使用查找表(例如 0x55 -> 0xAA)实现了这一点,但我想知道是否有任何 CRC 属性可以用来提高效率。
这是我的代码(在 C 中):
static const unsigned long long CRC64_TABLE[256] = {
0x0000000000000000, 0x42F0E1EBA9EA3693, 0x85E1C3D753D46D26, 0xC711223CFA3E5BB5, 0x493366450E42ECDF, 0x0BC387AEA7A8DA4C, 0xCCD2A5925D9681F9, 0x8E224479F47CB76A,
0x9266CC8A1C85D9BE, 0xD0962D61B56FEF2D, 0x17870F5D4F51B498, 0x5577EEB6E6BB820B, 0xDB55AACF12C73561, 0x99A54B24BB2D03F2, 0x5EB4691841135847, 0x1C4488F3E8F96ED4,
0x663D78FF90E185EF, 0x24CD9914390BB37C, 0xE3DCBB28C335E8C9, 0xA12C5AC36ADFDE5A, 0x2F0E1EBA9EA36930, 0x6DFEFF5137495FA3, 0xAAEFDD6DCD770416, 0xE81F3C86649D3285,
0xF45BB4758C645C51, 0xB6AB559E258E6AC2, 0x71BA77A2DFB03177, 0x334A9649765A07E4, 0xBD68D2308226B08E, 0xFF9833DB2BCC861D, 0x388911E7D1F2DDA8, 0x7A79F00C7818EB3B,
0xCC7AF1FF21C30BDE, 0x8E8A101488293D4D, 0x499B3228721766F8, 0x0B6BD3C3DBFD506B, 0x854997BA2F81E701, 0xC7B97651866BD192, 0x00A8546D7C558A27, 0x4258B586D5BFBCB4,
0x5E1C3D753D46D260, 0x1CECDC9E94ACE4F3, 0xDBFDFEA26E92BF46, 0x990D1F49C77889D5, 0x172F5B3033043EBF, 0x55DFBADB9AEE082C, 0x92CE98E760D05399, 0xD03E790CC93A650A,
0xAA478900B1228E31, 0xE8B768EB18C8B8A2, 0x2FA64AD7E2F6E317, 0x6D56AB3C4B1CD584, 0xE374EF45BF6062EE, 0xA1840EAE168A547D, 0x66952C92ECB40FC8, 0x2465CD79455E395B, …Run Code Online (Sandbox Code Playgroud) crc ×10
checksum ×3
c++ ×2
apache-spark ×1
arrays ×1
c ×1
crc32 ×1
crc64 ×1
delphi ×1
gzip ×1
hadoop ×1
java ×1
performance ×1
polynomials ×1
python ×1
serial-port ×1