阅读( 218 ) 我要纠错

代码实例


<HEAD>
<TITLE>CRC16 计算——HTML+js</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.2180" name=FCH>
</HEAD>

<SCRIPT language=JavaScript>
function inttohex(num, size)
{
var str, len;
str = num.toString(16);
len = str.length;
if(len >= size)
str = str.substr(len - size, size);
else
{
while(size > len++)
str = '0' + str;
}
return str.toUpperCase();
}
function rehextoint(string) //!<反转
{
var i, str, len;
str = '';
for (i = 0; i < 16; i += 2)
str += string.substr(14 -i, 2);
return parseInt(str,16);
}
function GetCRCString(crcdatastr, crcinitstr)
{
var i, crc, len;
len = crcdatastr.length * 4;
for(i = 0; i < (4 - len / 4); i++)
crcdatastr += "0"; //!<补 0
crc = rehextoint(crcdatastr) ^ parseInt(crcinitstr, 16);
crc &= (1 << 16) - 1;
for(i = 0; i < len; i++)
{
if (crc & 1)
{
crc >>>= 1;
crc ^= parseInt(("A001"), 16);
crc |= (1 << 15);
}else
crc >>>= 1;
}
crc &= (1 << 16) - 1;
return inttohex(crc, 4);
}
function HexStringFormat(str)
{
var patrn = /[0-9a-fA-F]/; //!<正则表达式
var i, ptr, ch;
ptr = "";
for(i = 0;i < str.length;i ++)
{
ch = str.substr(i, 1);
if(patrn.test(ch))
ptr += ch;
}
return ptr.toUpperCase();
}
function crc()
{
var i , str , strcrc;
if (text12.value.length > 0)
{
strcrc = "0000"; //!<初值
str = HexStringFormat(text12.value);
text140.value = "";
for(i = 0; i < str.length; i += 4)
strcrc = GetCRCString(str.substr(i, 4), strcrc);
text140.value = inttohex((parseInt(strcrc, 16) ^
parseInt(("0000"), 16)), 4);
}
}
</SCRIPT>

<BODY>
<table align="center"><tr> <td>马上计算:<br>
<textarea cols="100" rows="5" id=text12
title="将需要校验的数据拷贝至文本框内,格式如“AA BB CC”或“AABBCC”,点击计算按钮。
">
01 00 00 80 00 00 00 00 00 00 FE 02 28 00 A3 06 01 23 00 00 01 1F 00 00
00 00 00 00 04 00 10 00 00 00 00 02 00 00 00 00 02 02 01 00 00 0A 04 00
00 00 D1 F6 B0 EE

</textarea><br>
<INPUT type=button value="计算" onClick = crc() >CRC16 结果:
<input name="text" type=text id=text140 style="color:#F00" value=" "
size=19 maxlength=16></td></tr></table>
</BODY>

尝试一下 »

点击“尝试一下”按钮查看在线实例

C#

×