2014-07-03 28 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