8位 CRC 验证 在做串口通讯,硬件有 8位 CRC 验证字符串谁能举个例子?我要发 FC 01 02 03 04 05 06 3D 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我要发 FC 01 02 03 04 05 06 __CRC 在下划线处可以写出计算过程吗? http://canny.cnblogs.com/archive/2006/01/06/312130.html 搜索crc验证,一般都是c的代码,你翻译成c#的就可以用了 搞错了,这个才是^_^http://canny.cnblogs.com/archive/2006/01/29/82470.html#324226 //偶在C++BUILDER版摘录的unsigned int cal_crc(const unsigned char *ptr, unsigned char len){ unsigned char i; unsigned int crc=0; while(len--!=0) { for(i=0x80; i!=0; i/=2) { if((crc&0x8000)!=0) { crc*=2; crc^=0x1021; } /* 余式CRC 乘以2 再求CRC */ else { crc*=2; } if((*ptr&i)!=0) { crc^=0x1021; /* 再加上本位的CRC */ } } ptr++; } return(crc);}* checksumDWORD GetSum(char *s){ DWORD sum = 0; int i = 0; while (*s) { sum += (DWORD)s[i++]; s++; } return sum;} 我这儿正搞 CRC 校验,(c# 8 位)的,告诉我你的 email,我把资料法过去。 我刚才将你的这行命令校验一下:FC 01 02 03 04 05 06 3D 校验码:D7 FC 01 02 03 04 05 06 校验码:C1以下是我在 控制台程序下的调试代码:using System;namespace ConsoleApplication8{ /// <summary> /// Class1 的摘要说明。 /// </summary> class Class1 { #region CRC 8 位校验表 /// <summary> /// CRC 8 位校验表 /// </summary> public byte[] CRC8_Table = new byte[] { 0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65, 157,195,33,127,252,162,64,30, 95,1,227,189,62,96,130,220, 35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98, 190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255, 70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7, 219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154, 101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36, 248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185, 140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205, 17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80, 175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238, 50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115, 202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139, 87,9,235,181,54,104,138,212,149,203, 41,119,244,170,72,22, 233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168, 116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53 }; #endregion uint crc = 0; string buildingCrcStr="FC010203040506"; string tempCrcStr; public void Crc(int bval) { crc = CRC8_Table[crc ^ bval]; string tempStr=System.Convert.ToString(crc); } /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { Class1 clasObj=new Class1(); for(int i=0;i<(clasObj.buildingCrcStr.Length);i=i+2)//每次提取两位进行校验 { clasObj.tempCrcStr=""; clasObj.tempCrcStr="0x"+clasObj.buildingCrcStr[i].ToString()+clasObj.buildingCrcStr[i+1].ToString(); clasObj.Crc(Convert.ToByte(clasObj.tempCrcStr,16)); //调用 校验算法 (调用前先将 string 转换为 byte 型数据,且以十六进制形式表示) } Console.WriteLine("\n\n"+"最终生成的CRC校验码十六进制表示为:0x"+clasObj.crc.ToString("x").ToUpper()+"\n");// } }} huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)我把你的名字默念一百遍[email protected] (建议直接复制)终其一生保留一种想哭的冲动QQ : 38981759 我们可以多练习练习哈 lz,相关资料依发至你的 email,清查收。没收到的话,我再发,希望你早日解决问题。 为什么在winxp下可以运行的代码在win7下就报错 sql请教! 数据库中的路径读出后用trim去不掉空格,要怎么办呀? 求助,选择开发语言 累,控件如果用同一个同一个Click EventArgs区分。 求一个正则表达式 求了!!!!!! 关于数据库数据类型的问题 c#中string[] 转化成char* 关于工厂设计模式的疑惑 高分询问一简单的问题。 白送分
unsigned int cal_crc(const unsigned char *ptr, unsigned char len)
{
unsigned char i;
unsigned int crc=0;
while(len--!=0)
{
for(i=0x80; i!=0; i/=2)
{
if((crc&0x8000)!=0)
{
crc*=2;
crc^=0x1021;
} /* 余式CRC 乘以2 再求CRC */
else
{
crc*=2;
}
if((*ptr&i)!=0)
{
crc^=0x1021; /* 再加上本位的CRC */
}
}
ptr++;
} return(crc);
}* checksum
DWORD GetSum(char *s)
{
DWORD sum = 0;
int i = 0;
while (*s)
{
sum += (DWORD)s[i++];
s++;
}
return sum;
}
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
#region CRC 8 位校验表 /// <summary>
/// CRC 8 位校验表
/// </summary>
public byte[] CRC8_Table = new byte[]
{
0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,
157,195,33,127,252,162,64,30, 95,1,227,189,62,96,130,220,
35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98,
190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255,
70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,
219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154,
101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,
248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,
140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205,
17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80,
175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238,
50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115,
202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139,
87,9,235,181,54,104,138,212,149,203, 41,119,244,170,72,22,
233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168,
116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53
};
#endregion
uint crc = 0;
string buildingCrcStr="FC010203040506";
string tempCrcStr; public void Crc(int bval)
{
crc = CRC8_Table[crc ^ bval]; string tempStr=System.Convert.ToString(crc);
} /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Class1 clasObj=new Class1(); for(int i=0;i<(clasObj.buildingCrcStr.Length);i=i+2)//每次提取两位进行校验
{
clasObj.tempCrcStr="";
clasObj.tempCrcStr="0x"+clasObj.buildingCrcStr[i].ToString()+clasObj.buildingCrcStr[i+1].ToString();
clasObj.Crc(Convert.ToByte(clasObj.tempCrcStr,16)); //调用 校验算法 (调用前先将 string 转换为 byte 型数据,且以十六进制形式表示)
}
Console.WriteLine("\n\n"+"最终生成的CRC校验码十六进制表示为:0x"+clasObj.crc.ToString("x").ToUpper()+"\n");//
}
}
}
huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)
huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)
huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)
huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)
huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)
huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)我把你的名字默念一百遍[email protected] (建议直接复制)终其一生保留一种想哭的冲动QQ : 38981759 我们可以多练习练习哈