Tag: crc

Concox跟踪器的16位CRC-ITU计算

我正在为服务器程序创建C#代码,该程序通过TCP从Concox TR06 GPS跟踪器接收数据: http://www.iconcox.com/uploads/soft/140920/1-140920023130.pdf 首次启动时,跟踪器会发送一条登录消息,需要在发送任何位置数据之前进行确认。 我的第一个问题是,根据文档,确认消息长18个字节,但它们提供的示例只有10个字节长: 在上表中的Ps,我非常确定的“位”列应该标记为“字节”而不是…… 现在,我的主要问题是计算错误检查。 根据文件: 校验码由CRC-ITU检查方法生成。 从分组长度到信息序列号(包括“分组长度”和“信息序列号”)的协议结构中的数据的校验码是CRC-ITU的值。 好的,所以在上面的例子中,我需要在0x05 0x01 0x00 0x01上计算CRC 现在,我猜测它是16位CRC,如上图所示,CRC长度为2个字节。 我已经在http://www.sanity-free.org/134/standard_crc_16_in_csharp.html和http://www.sanity-free.org/133/crc_16_ccitt_in_csharp.html上实现了我在网上找到的两种不同的CRC实现,但都没有给出我的答案是,根据上图我应该得到 – 0xD9 0xDC。 我甚至使用这个网站 – https://www.lammertbies.nl/comm/info/crc-calculation.html – 手动输入4个字节,但没有任何东西给我我应该得到的结果根据上图… 我可能会出错的任何想法? 任何指针/提示将不胜感激。 谢谢

我的CRC64校验和编码需要CRC反向代码

有人可以用C#编码CRC64反向算法吗? 我无法编码,无法理解任何事情。 谢谢, 我从C ++复制了CRC64校验和代码并将其转换为C#.NET。 整个代码显示如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CRC64 { public class cCRC64 { public UInt64[] crc64_table = { 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, […]

如何计算C#.net文件的CRC值?

我想在C#.net中使用32位算法计算文件的CRC值….

C#CRC实现

我正在尝试将串行端口设备集成到我的应用程序中,这需要对我发送给它的字节进行CRC-CCTTvalidation。 我是管理字节数据包的新手,需要帮助。 它使用此公式进行CRC演算: [CRC-CCITT P(X)= X16 + C12 + C8 + 1] 因此,例如对于数据包:0xFC 0x05 0x11,CRC为0x5627。 然后我将此数据包发送到设备:0xFC 0x05 0x11 0x27 0x56 此外,数据包长度将在5到255之间变化(包括CRC校验字节) 我不知道如何实现这一点,所以欢迎任何想法/建议。 希望我明确表示清楚,先谢谢。 编辑:这是我需要做的规范:

CRC16 ISO 13239实施

我正试图在C#中实现Crc16。 我已经尝试了很多不同的实现,但是大多数都给了我不同的值。 以下是我已经使用过的一些代码。 private static int POLYNOMIAL = 0x8408; private static int PRESET_VALUE = 0xFFFF; public static int crc16(byte[] data) { int current_crc_value = PRESET_VALUE; for (int i = 0; i < data.Length; i++) { current_crc_value ^= data[i] & 0xFF; for (int j = 0; j > 1) ^ POLYNOMIAL; } else { current_crc_value = […]

C#中的CRC-4实现

我一直在网上寻找4位循环冗余校验(CRC-4-ITU)的C#实现,但到目前为止我还没有成功。 有没有人能够给我一个CRC-4-ITU的参考实现? 如果存在标准多项式,则优选使用标准多项式(我已经将维基百科指出的规范读作CRC4规范而没有找到多项式的定义)。 我也非常感谢某种测试套件或测试数据来validationCRC4的实现。 谢谢!

如何从C#生成CRC-16

我正在尝试使用C#生成CRC-16。 我用于RS232的硬件要求输入字符串为HEX。 下面的屏幕截图显示了正确的转换。对于测试,我需要8000为0xC061,但生成CRC-16的C#方法必须能够转换任何给定的HEX字符串。 我尝试过使用Nito.KitchenSink.CRC 我也尝试了以下,当输入8000时生成8009 – public string CalcCRC16(string strInput) { ushort crc = 0x0000; byte[] data = GetBytesFromHexString(strInput); for (int i = 0; i < data.Length; i++) { crc ^= (ushort)(data[i] << 8); for (int j = 0; j 0) crc = (ushort)((crc << 1) ^ 0x8005); else crc <<= 1; } } return […]