Widget:CRCprefix: Difference between revisions
Blanked the page Tag: Blanking |
No edit summary |
||
| Line 1: | Line 1: | ||
<html> | |||
<head lang="en"> | |||
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> | |||
<title>CRC Prefix Calculator by L0scher</title> | |||
<script type="text/javascript"> | |||
//<![CDATA[ | |||
function calculateInit () { | |||
str = document.crcform.hexstring.value.toString(); | |||
var prefix = crc.calculateInitFunc(str); | |||
document.getElementById("initcrc").textContent = | |||
prefix.toString(16).toUpperCase().padStart(4, "0"); | |||
} | |||
var crc = (function() { | |||
applyCRC = function(crc, value) { | |||
crc ^= value << 8; | |||
crc &= 0xffff; | |||
for (bit = 0; bit < 8; bit++) { | |||
var olddata = crc & 0x8000; | |||
crc <<= 1; | |||
if (olddata) { | |||
crc ^= 0x1021; | |||
} | |||
crc &= 0xffff; | |||
} | |||
return crc; | |||
} | |||
calcCRC = function(pkt, crc) { | |||
return pkt.reduce(applyCRC, crc); | |||
} | |||
stringToBytes = function(s){ | |||
return s.split(/([a-fA-F0-9][a-fA-F0-9])/g).filter(p => !!p).map(c => parseInt(c, 16)); | |||
} | |||
bytesToString = function(b) { | |||
return b.map(c => c.toString(16).padStart(2,"0")).join(""); | |||
} | |||
return { | |||
calculateInitFunc : function (str) { | |||
str = str.toUpperCase().replace(/\s/g,""); | |||
var bytes = stringToBytes(str); | |||
for (testvalue = 0; testvalue < 65536; testvalue+=1) { | |||
if (calcCRC(bytes,testvalue) === 0) { | |||
return testvalue; | |||
} | |||
} | |||
} | |||
}; | |||
})(); | |||
//]]> | |||
</script> | |||
</head> | |||
<body> | |||
<h1>CRC Prefix Calculator</h1> | |||
<p>Enter a string of hex bytes in the box and hit the <b>Find CRC init</b> button searches for the initial CRC value which would make the calculated CRC equal to zero. It uses the 0x1021 polynomial value. If it cannot find such a value, it will leave the value unchanged. | |||
</p> | |||
<form name="crcform"> | |||
<textarea name="hexstring" rows="5" cols="80">30FFFFFFFFFFFF50CF5DD9E2C0B80065F5D1A483F0FBBC6F01001E6C043B517E90B286 | |||
</textarea> | |||
<br> | |||
<label>Initial CRC value (hex):</label> | |||
<label id="initcrc">5FD6</label> | |||
<br> | |||
<input name="submit" type="button" value="Find CRC init" onclick="calculateInit()"> | |||
</form> | |||
</body></html> | |||