C 需要关于代码转换到Matlab的建议吗
我是Matlab编程新手,但必须在Matlab中转换C程序。有几个部分让我感到困惑。我将C和Matlab的部分放在这里,希望您对代码的改进提出建议,因为完整的代码没有给出正确的输出: C代码:C 需要关于代码转换到Matlab的建议吗,c,matlab,C,Matlab,我是Matlab编程新手,但必须在Matlab中转换C程序。有几个部分让我感到困惑。我将C和Matlab的部分放在这里,希望您对代码的改进提出建议,因为完整的代码没有给出正确的输出: C代码: j = 0; for (i=0;i<256;i++){ j = (j+S[i]+key[i%strlen(key)]) %256; int t = S[i]; S[i] = S[j]; S[j] = t; } 由于使用表达式sc(i
j = 0;
for (i=0;i<256;i++){
j = (j+S[i]+key[i%strlen(key)]) %256;
int t = S[i];
S[i] = S[j];
S[j] = t;
}
由于使用表达式
sc(i0+1)
计算提醒,因此应该从0开始for
循环
le = length(key);
sc = 0:255;
output = 0;
for i0 = 0:255
output=rem((output+sc(i0+1)+key(rem(i0,le)+1)),256);
end
对于此C代码:
j = 0;
for (i=0;i<256;i++)
{
j = (j+S[i]+key[i%strlen(key)]) %256;
int t = S[i];
S[i] = S[j];
S[j] = t;
}
因此,有两个问题:
%
与Matlab中的rem
和mod
既不完全相同,除非所有的数字都是正数,在这种情况下这并不重要。如果你处理的是负数,那么你需要做一点你所追求的研究由于我看不到
S
数组声明,您能显示整个代码吗?您应该使用sc(i0+1),而不是使用sc(i0),因为您是从1开始循环,而不是从1开始循环0@rullof:整个代码是。我也在这里插入了一些附加代码。@Bee您的c代码是否按预期工作?@rullof:请稍后通知您。我在想办法谢谢谢谢我在试着用这个谢谢。我尝试了您的代码,但它显示以下错误:试图访问密钥(0);索引必须是正整数或逻辑整数。@Bee已修复该问题;)再试一次。我留下了一个+1谢谢你!我必须不知所措,但编程世界的新手,只有一个C代码似乎工作,并给出了一个有效的输出。在C中有inti,j=0;对于(i=0;i<256;++i)状态[i]=i代码>当我试图将其转换为I=1:256 S(I)=I的时;结束
显示:试图访问S(0);索引必须是正整数或逻辑。rc4key(第15行)中的错误S(i)=S(j);。虽然我没有使用任何0。你能给我一些建议吗?整个代码:@Bee不是来自s(i)
,而是来自s(j)
-显然j
这里必须为零。我会更新我的答案,请查看。再次感谢。它显示的是一个输出,不幸的是我不知道正确与否。我现在可以计算出另一部分,这样最终完整的输出可以与我的C程序进行比较。如果我在这里提供链接,您是否可以检查我的新问题?
j = 0;
for (i=0;i<256;i++)
{
j = (j+S[i]+key[i%strlen(key)]) %256;
int t = S[i];
S[i] = S[j];
S[j] = t;
}
j = 0;
for i = 1:256
j = mod(j + S(i) + key(mod(i-1, length(key)) + 1), 256);
t = S(i);
S(i) = S(j+1);
S(j+1) = t;
end