Ich habe eine Bitmaske in einem Byte gespeichert werden, da ich nur 8 Bits brauche. Wenn ich es bin die Schaffung ich es als String zu tun (ich dachte, es würde auf diese Weise einfacher sein) und ich es dann mit Byte.parseByte(mask,2)
auf ein Byte verwandeln, aber ich fand es nicht für bestimmte Werte nicht funktioniert:Warum Byte.parseByte ("10000001", 2) einen NFE wirft?
String bits="10000001";
Byte.parseByte(bits,2);// throws a NFE
Aber wenn ich tun:
byte b=(byte)0x81; //1000 0001
Es ist kein Problem.
PS: Ich fand eine Abhilfe, byte b=(byte)Integer.parseInt(bits, 2);
aber trotzdem möchte ich wissen, warum ich nicht mehr als 8 Bits in eine
Kurze Antwort: weil 'Byte' signiert ist. –
Ja, ich weiß es, die erste 1 sagt, dass es eine negative Zahl ist. Mein Punkt ist, dass das kein Problem sein sollte. Wie kann ich dann -127 speichern, wenn ich einen String erhalte? –