Bug in der BigInteger? Zu viele Arrayelemente!

Klein0r

Erfahrenes Mitglied
Hallo zusammen!
Ich wunder mich die ganze zeit warum ich falsche Werte errechne aber das Problem liegt anscheinend in der BigInteger-Klasse.

(die genutzte Funktion StringOperations.byteToHex() wandelt einfach nur ein Byte in einen Hex-String)

Folgendes Problem:
Java:
byte[] b = new BigInteger("16", 16).toByteArray();
for (byte by : b) {
	System.out.println(StringOperations.byteToHex(by));
}
Das funktioniert prima. Es wird folgendes ausgegeben:
Code:
16

Nun teste ich das ganze mit einem anderen String wie z.B. 99:
Java:
byte[] b = new BigInteger("99", 16).toByteArray();
for (byte by : b) {
	System.out.println(StringOperations.byteToHex(by));
}
plötlich hat das Array 2 Elemente. Folgendes Ergebnis:
Code:
00
99

Warum ist das so? Mit Hex-Werten unter 80 tritt das Problem nicht auf und es wird auch nur ein Element im Array erzeugt. Alles was darüber liegt erzeugt eine zweite Position.

Ich hoffe ihr könnt mir folgen und eine logische Erklärung geben ;)
Alternativ bräuchte ich einfach nur eine andere Methode einen einzelnen Hexwert in ein Byte zu wandeln!

lg
 
Jetz habe ich das Problem erstmal provisorisch umgangen:

Java:
byte[] b = new BigInteger(StringOperations.byteToHex(imageData[counter]).substring(0, 1) + hex.substring(i, i + 1), 16).toByteArray();
imageData[counter] = b[b.length-1];

Also nehme ich immer das letzte Element - was besseres ist mir nicht eingefallen!
Falls jemand eine bessere Idee hat oder eine Erklärung für das Verhalten oben kann er das gerne bekannt geben ;)

lg
 
Niemand eine Idee?
Ist ja wirklich komisch mit der Ausgabe.

Lohnt es sich dafür nen Bugreport zu schreiben?
Ist das vllt sogar gewolltes Verhalten Ich kann es mir eigentlich nur schwer vorstellen...

lg
 
Zurück