이 내 코드입니다 - 고전 곱셈 A * B = C바이트 배열 곱셈
private static int MASK = 0x00ff;
public static int multiplication(byte[] A, byte[] B, byte[] R)
{
byte n = 0;
int bb;
int sum = 0;
int lenbyte = 0;
for (int c = 0; c < R.Length; c++) //R set 0
{
R[c] = 0;
}
int j = B.Length - 1;
int i = 0;
do //cycles go throught bytes of B from LSB to MSB
{
bb = B[j] & MASK;
if (bb != 0x00)
{
i = A.Length - 1;
n = 0x00; //carry byte
do //cycles throught bytes of A from LSB to MSB
{
sum = ((A[i] & MASK) * bb) + (R[i + j+1 ]&MASK) + (n & MASK);
R[i + j+1] = (byte)(sum & MASK);
n = (byte)((uint)sum >> 8);
i--;
} while (i >= 0);
R[j] = n;
j--;
}
else
{
R[j] = 0x00;
j--;
}
} while (j >= 0);
return 1;
}
그것은 나쁜 작동합니다. 그 문제는 비트 단위라고 생각합니다. 당신의 아이디어에 감사드립니다. :)
더 구체적으로 문제를 제기 할 수 있습니까? 어떤 부분이 작동하지 않습니까? –