2011-08-08 37 views
0

我已經使用NSURLConnection實現了下載部分。 現在我試圖爲CRC校驗添加一個更多的功能。 我通過維基百科閱讀了一些基本概念。 但我有點困惑如何開始。 任何人都可以給我這個提示嗎?謝謝crc在使用NSURLConnection時下載

btw ..我不是想自己設計整個crc部分。

+0

你知道,這是沒有必要的,對不對?見下面的評論。 – Snips

回答

1

zlib的,它是包含與iOS,包括CRC32()函數:

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

注意,如下面零星消息註釋,CRC校驗被內置到TCP/IP。當然,還有其他原因可能會在iOS上執行CRC ......但是對數據包完整性進行基本檢查可能不是其中的一項。

+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; 
} 
相關問題