2011-08-08 12 views
0

NSURLConnectionを使用してダウンロードパートを実装しました。 今私はCRCチェックのためのもう一つの関数を追加しようとしています。 私はウィキペディアを通していくつかの基本的な概念を読みました。 しかし、私は始める方法がちょっと混乱しています。 誰も私にこのことのヒントを与えることができますか?ありがとうございましたNSURLConnectionを使用してダウンロードするためのcrc

btw ..私は自分でcrc部品全体を設計しようとしていません。 IOSを含まれ

+0

あなたは正しい、これは必要ではないことを知っていますか?以下のコメントを参照してください。 – Snips

答えて

1

ZLIBは、CRC32を含む()関数:

uLong crc = crc32(0L, Z_NULL, 0); 
crc = crc32(crc, [self bytes], (uInt)[self length]); 
return crc; 

なお、以下の切れ端コメント、CRCはTCP/IPに組み込まれています。 iOS上でCRCを行う理由は他にもありますが、パケットの完全性のための基本的なチェックは、おそらくそれらの1つではありません。

+1

ちょうど...このレベルでcrcを追加することは本当に必要なのですか?TCP/IPの下位層は、データが完全で破損しないように配慮してください。 – Snips

+0

はい、TCP/IPにはハードウェアレベルでの32ビットCRC検出機能が組み込まれています。 –

+0

私は怒っていません:-) OPは注意してください。 – Snips

1

単純なcrcを自分で実装したい場合は、 Thisがお手伝いします。例えば

採用BSD 16ビットのCRCアルゴリズム:

- (NSInteger)getBSDcrc:(NSData*)data { 
    NSUInteger lendth = [data length]; 
    char *byte = (char*)[data bytes]; 
    NSInteger crc = 0; 

    for (int i = 0; i < length; ++i) { 
     crc = (crc >> 1) + ((crc & 1) << 15); 
     crc += byte[i]; 
     crc &= 0xffff; 
    } 
    return crc; 
} 
関連する問題