作者lg31cm (我住5F)
看板CSSE
標題[問題] 看不太懂這個 CRC-16 code generation...
時間Sun Oct 29 18:41:30 2006
看不太懂這個 CRC-16 code generation...
/* x^16+x^12+x^5+1 */
int calcrc(ptr, count)
char *ptr;
int count;
{
int crc, i;
crc = 0;
while (--count >= 0)
{
crc = crc ^ (int)*ptr++ << 8;
for (i = 0; i < 8; ++i)
if (crc & 0x8000)
crc = crc << 1 ^ 0x1021;
else
crc = crc << 1;
}
return (crc & 0xFFFF);
}
手算我已經很熟習,不過看到這段 code 覺得有點神奇,我有把 count 以 1 帶入
用手算過,跟手算的過程一樣,但是用 > 1 帶入過程就不一樣了,總覺得背後應該
有個數學原理可以展開原手算的方法,然後才能寫出這樣的程式,不知道各位前輩
能不能指點一下,thank you!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.33.4