代码实例
<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) else str = str.substr(len - size, size); {
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>
尝试一下 »
点击“尝试一下”按钮查看在线实例
<HTML xmlns="http://www.onbonbx.com">
<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) else str = str.substr(len - size, size); {
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>
</HTML>