2014-07-03 62 views
-1

我正在處理的程序有一個小問題。對於具有特定功能的循環

我的程序在一個數組上執行一個函數。該函數只能執行數組的前16個元素上的命令。

我現在想做一個循環,以便函數可以在數組的16個元素上工作。這是我的想法,但它在一個無限循環結束了:

int l = 0; 
for (int i=0; i<=size; i+16) 
{ 
    for (int j=0; j<=16;j++) 
    { 
     FUNCTION(INARRAY; OUTARRAY); 
    } 
} 

接下來的問題是,該功能將只能通過數組的元素16行走而忽略其他。

什麼是使其遍歷接下來的16個元素並將其保存在緩衝區中作爲以下元素的最佳方式?

當我適應的解決方案仍然通過第一16個元素只做過程,然後不與下一個16

+0

您將如何決定檢查多少個元素? – TheBlindSpring

+0

該函數本身具有16個元素的限制 – user3694354

+4

請不要編輯帖子以問一個完全不相關的問題,它會讓讀者感到非常困惑,尤其是當前答案僅適用於上一個問題。如果您想添加更多關於_same_問題的信息和詳細信息,請修改帖子,否則請以獨立帖子啓動一個新問題。 – Lundin

回答

0

想通了這一個了,前一段時間 這裏是它的工作對我來說

for (uint64_t i=0; i<size; i+=16) 
{aes_encrypt(tfm, &tempbuffer[i], &inbuffer[i]);} 

但這以下 調用AES_ENCRYPT將加密的前16個字節數據的陣列中, 的對循環然後跳轉到第16項並再次執行加密

8

繼續這樣:

i + 16 

沒有任何改變的價值i,以便循環永不終止。該表達式僅計算i + 16的值,但結果被丟棄。

要更改變量的值,請使用賦值(=)運算符,如i = i + 16i += 16

0

我想我有你在找什麼。你將不得不實施它並檢查出來。不過要注意的是,如果你的數組大小是16的倍數,那麼這個工作就會奏效,否則會有剩餘的元素與已經處理過的元素配對。

int count16 = 0; 
var tempAr[16]; 
for (int i=0; i<numOfArraysToGoThrough; i++) 
{  
    tempAr[count16]=numOfArrayToGoThrough[i]; 
    if (count16 == 15) 
    { 
    FUNCTION (tempAr, OUTARRAY); 
    count16=0; 
    } 
    else 
    count16+=1; 

} 
+0

功能是AES加密/解密,該功能只對en /解密一個128bit的塊然後完成,我想寫一個循環,這樣我就可以加入/解密一個超過16個元素的數組 – user3694354

+0

So你想循環遍歷多個數組,還是僅循環使用多於16個元素的數組?或兩者? – TheBlindSpring

+0

通過array1循環並將結果寫入到array2中,只需要一個數組循環通過 – user3694354