BigInteger und ByteArray



  • Hallo,

    ich habe hier ein BigInteger. die Zahl möchte ich ByteWeise umdrehen. Ich möchte das ganze aber ohne Stringoperationen lösen.

    BigInteger bigIntegerIn=BigInteger.valueOf(98765);
    byte[] byteArray= bigIntegerIn.toByteArray();

    byte[] byteArrayReserve= new byte[byteArray.length];
    for (int i = 0; i < byteArrayReserve.length; i++) {
    byteArrayReserve[i]= (byte)((inValue[byteArray.length- (i+1)]));
    }

    BigInteger bigIntegerInerg = new BigInteger(byteArrayReserve);

    Das Ergebnis stimmt nicht. Es sollte folgendes rauskommen: 16736013
    Also Eingabe war: 00001101 01011111 11111111 (98765)
    Bytes Umdrehen: 11111111 01011111 00001101 (16736013)

    Für bigIntegerInerg kommt aber folgendes raus: -3374846

    Ich werde das Gefühl nicht los das es was mit dem 2er Komplement zu tun hat.



  • Sry. Die Zeile in der for Schleife soll so lauten:

    byteArrayReserve[i]= (byte)((byteArray[byteArray.length- (i+1)]));



  • BigInteger bigIntegerIn=BigInteger.valueOf(98765); 
    byte[] byteArray= bigIntegerIn.toByteArray(); 
    byte[] byteArrayReserve= new byte[byteArray.length]; 
    
    for (int i = 0; i < byteArrayReserve.length; i++) 
    { 
         byteArrayReserve[i]= (byte)((inValue[byteArray.length- (i+1)])); 
    }
    

Anmelden zum Antworten