donkey7 napisał(a)
Klasa BigInteger
Konstruktor: public BigInteger(byte[] val)
Z powrotem: public byte[] toByteArray()
Zawijanie można zrobić po prostu przez skracanie tablicy jeśli jest za długa.
Dzieki, pamietam ze cos takiego robilem i przejrzalem cala klase Integer... Zdziwilo mnie, ze nie ma tam takiego konstruktora. No nic, dziura w glowie, kompletnie zapomnialem. W miedzy czasie napisalem inna funkcje:
public static final int byteArrayToInt(byte[] b) {
return (b[0] << 24)
+ ((b[1] & 0xFF) << 16)
+ ((b[2] & 0xFF) << 8)
+ (b[3] & 0xFF);
}
public static final byte[] intToByteArray(int value) {
return new byte[]{
(byte) (value >>> 24),
(byte) (value >>> 16),
(byte) (value >>> 8),
(byte) value};
}
public static byte[] inkrementuj(byte[] tablica, int inkrementacja) {
byte[] fragment = new byte[4];
for (int i = 0; i < 16; i += 4) {
System.arraycopy(tablica, i, fragment, 0, 4);
int wartoscFragmentu = Tablice.byteArrayToInt(fragment);
if (wartoscFragmentu < Integer.MAX_VALUE) {
wartoscFragmentu += inkrementacja;
System.arraycopy(Tablice.intToByteArray(wartoscFragmentu), 0, tablica, i, 4);
return tablica;
} else {
System.arraycopy(new byte[4], 0, tablica, i, 4);
}
}
return new byte[16];
}
jakby ktos chcial^^ raczej dziala dla tablic 16 bajtowych