2017-03-16 71 views
1

有什麼最快的方法來比較24個元素字節數組與傳入的byte*緩衝區?最快的方法來比較陣列與傳入字節*緩衝區

byte compare_array[24]= 
{0x00,0x00,0x00,0x01,0x26,0x05, 
0xF8,0x00,0x11,0x22,0x33,0x44, 
0x55,0x66,0x77,0x88,0x99,0xAA, 
0xBB,0xCC,0xDD,0xEE,0xFF,0xFF}; 

下面的代碼感覺不舒服。

if((buffer[0] == 0x00) && (buffer[1] == 0x00) && ...) 
{ 
    //... 
} 
+0

首先,你可以做一個大小檢查,如果大小不同,你不必進入檢查 – KItis

回答

0

我同意你的觀察,認爲代碼不正確。 你需要的是一個循環。 for循環或do while循環。在這兩種情況下,只要找到不同的字節,就可以儘早解決問題。 Kltis提到的檢查數組長度的早期修剪是儘早保存運行時的最簡單方法。

如果您確實需要深入瞭解一下memcmp()函數。

祝你好運!

+0

謝謝單個元素,我申請這個代碼爲我的項目:memcmp(compare_array,buffer,24); – sailfish009

1

這可能會更快,如果陣列排列:

bool compare(uint8_t* buffer) { 
    uint64_t *c64 = (uint64_t*)compare_array; 
    uint64_t *b64 = (uint64_t*)buffer; 
    return c64[0] == b64[0] && c64[1] == b64[1] && c64[2] == b64[2]; 
}