[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 08/05 19:05 / Filesize : 169 KB / Number-of Response : 711
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門編)Part 94



300 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 11:46:23.09 ]
CRCを計算するソース。

#define CRC32_POLY 0x82F63B78 // CRC-32C (Castagnoli) #define CRC32_POLY 0xEDB88320 // CRC-32-IEEE 802.3
class CrcCalculate {
public:
unsigned int crc32table[256];
void make_crc_table();
CrcCalculate() { make_crc_table(); }
friend unsigned int crc32base (void *ch, unsigned int byte, unsigned int cal);
} CrcCalculate_;

void CrcCalculate::make_crc_table() {
unsigned int i, j, x;
for (i = 0; i < 256; i++){
x = i;
for (j = 0; j < 8; j++) if(x&1) x=(x>>1)^CRC32_POLY; else x>>= 1;
crc32table[i]=x; }}

unsigned int crc32base (void *ch, unsigned int byte, unsigned int cal) {
unsigned int i; unsigned char *p = (unsigned char *)ch;
for (i = 0; i < byte; i++) cal = (cal >> 8) ^ CrcCalculate_.crc32table[(cal ^ p[i]) & 0xFF];
return cal; }

unsigned int crc32 (void *ch, unsigned int byte) {return crc32base( ch, byte, 0xFFFFFFFF ) ^ 0xFFFFFFFF ; }
unsigned int crc32 (const std::string &ch) { return crc32( (void *)&ch[0], ch.size()); }






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<169KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef