I 코드의 다음 부분을 가지고비트 단위 XOR 연산자 바이트 배열
byte[] S = new byte[256];
byte[] T = new byte[256];
for (int i = 0; i < 256; ++i) {
S[i] = (byte)i;
T[i] = 13;
}
int j = 0;
int i2 = 0;
while (i2 < 256) {
j = j + S[i2] + T[i2] & 255;
byte[] arrby = S;
int n2 = i2;
arrby[n2] = (byte)(arrby[n2]^S[j]);
byte[] arrby2 = S;
int n3 = j;
arrby2[n3] = (byte)(arrby2[n3]^S[i2]);
byte[] arrby3 = S;
int n4 = i2++;
arrby3[n4] = (byte)(arrby3[n4]^S[j]);
}
초기 값과 S [] 배열 : 0,1,2,3,4,5 ...
arrby[n2] = (byte)(arrby[n2]^S[j]);
S [0]이 '13'에서 '0'의 값을 변경하고, I 이유를 이해할 수있다 : 프로그램 광고 도달
. S [0] 값을 수정하는 것은 무엇입니까? 나는이 '^'단지가 아니라 S의 비교를하고 arrby [N2]의 값을 변화를 보듯이 [0] 여기
S
같은'바이트 [] = arrby S] '-'와 'S' 동일한 배열을 참조 arrby'. – Eran그 외에도 : 당신의 이름은 다소 끔찍합니다. 변수가 무엇인지에 대해서는 아무 말도하지 않습니다. 또한 배열 전체의 길이를 "철자"하는 것은 매우 끔찍합니다. theArray.length를 사용하거나 적어도 SOME_CONSTANT = 255를 사용하는 것이 좋습니다. – GhostCat
'byte [] arrby = S' - 이것은 ** S의 복사본을 생성하지 않고 ** arrby에 저장합니다. 참조를 복사합니다. 즉, 두 변수가 동일한 객체를 참조합니다. 'arrby'를 수정하면'S'도 수정하고, 반대로 수정합니다. – BackSlash