PDA

View Full Version : الگویتم CRC32



baroon2
دوشنبه 09 دی 1387, 09:26 صبح
با سلام
من می خوام الگوریتم CRC32 را با c# بنویسم . راستش کدشو که به صورت C هست پیدا کردم.
اما یک خطش (خطی که bold شده) برام نامفهومه اگه کسی توضیح بده ممنون می شم.


void Init_CRC32_Table(void)
{
unsigned long i;
unsigned char j;
unsigned long ulPolynomial = 0x04C11DB7;

for (i= 0; i< 256; i++)
{
crc32_table1[i] = (i<< 24);
for (j= 0; j< 8; j++)
crc32_table1[i] = (crc32_table1[i]<< 1) ^ ((crc32_table1[i] & 0x80000000) ? ulPolynomial : 0);
}
}

Nima_NF
سه شنبه 10 دی 1387, 01:36 صبح
>> شیفت به چپ مقدار سمت چپ، به تعداد مقدار طرف دوم هست.

^ همان XOR هست یعنی XOR پرانتز سمت چپ با سمت راستش.

:؟ یعنی



num = (crc32_table1[i]<< 1) ^ ((crc32_table1[i] & 0x80000000);

// num will be converted to bool

if (num == true)
crc32_table1[i] = ulPolynomial ;
else if (num == false)
crc32_table1[i] = 0;

Saeed_m_Farid
چهارشنبه 11 دی 1387, 03:13 صبح
سلام baroon2:
كد قشنگي پيدا كردي و حتما اين تمام الگوريتم نيست ولي با اين ترتيبي كه من مي بينم زبونم لال ولي فكر ميكنم شما چند تا مشكل تو convert كدت به #C پيدا ميكني: اوليش شما اونجا متاسفانه فوق العاده در زمينه اشاره گر تو مزيقه (اينطوري بود ديگه؟ يا مذض ظ يقه) خواهي بود، بلايي كه سر بنده اومده و چيزي بعنوان *char‌ يا *void يا هيچ * ديگه اي نداري؟ البته واسه خودش نه ها! فقط واسه developer ها. خودش تو تمام هدرهاش پر * ولي موقع استفاده ما ميگه Unsafe يعني تو كار بزرگترا فضولي نكن، اميدوارم كه اصلا اشاره گر تو كدت نداشته باشي چو بيچاره ميشي. بقيه اش رو نگفتم ولي همون اشاره گر خودش 10 تا ميره ...

ميبخشيد آقا نيما فضولي بود ولي خوب دلم پر بود اينجا هم فرصت خوبي بود.

موفق باشيد.