13. februar 2003 - 09:27Der er
5 kommentarer og 1 løsning
Konvertering af 4 bytes til integer - og omvendt.
Jeg er i gang med noget kryptering. Mit problem består i at jeg skal kunne lave et array af 16 bytes om til et array 4 integers og omvendt. Koden jeg har skrevet ser ud som følger:
private static int[] byteArrayToState(byte[] block) { int[] state = new int[4]; for (int i = 0; i < 4; i++) state[i] = (block[4*i ] << 24) | (block[4*i+1] << 16) | (block[4*i+2] << 8) | (block[4*i+3] << 0);
return state; }
private static byte[] stateToByteArray(int[] state) { byte[] block = new byte[16]; for (int i = 0; i < 4; i++) { block[4*i] = (byte)(state[i] >>> 24); block[4*i+1] = (byte)((state[i] << 8) >>> 24); block[4*i+2] = (byte)((state[i] << 16) >>> 24); block[4*i+3] = (byte)((state[i] << 24) >>> 24); } return block; } Ideen er at de to funktioner skal være hinandens inverse (omvendte), men det er de ikke!!! Bitmønstret bliver ikke det samme når man konverterer. Jeg er overbevist om, at det er i typecastingen i stateToByteArray, det går galt. Spørgsmålet er så hvordan man så kan konverterer de 4 bytes til 1 integer???
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.