我是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;
}
Matlab代码:
le = length(key);
sc = 0:255;
output = 0;
for i0 = 1:255
output=rem((output+sc(i0+1)+key(rem(i0,le)+1)),256);
tm = sc(i0+1);
sc(i0+1) = sc(outpt+1);
sc(outpt+1) = tm;
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代码:
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
有两个问题:
%
用C既不是完全一样的rem
,也没有mod
在Matlab中,除非所有的数字总是积极在这种情况下,它并不重要。如果要处理负数,则需要进行一些研究。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句