So drucken Sie Byte im unsignalen Format in Java
-
27-10-2019 - |
Frage
Ich muss eine Variable vom Typ drucken byte
in einem nicht signierten Format. Wie mache ich das?
Lösung
Wollen Sie damit sagen, dass Sie mit einem signierten INT beginnen und den absoluten Wert wollen? Sie könnten so etwas tun:
byte b = Byte.parseByte("-9");
int i = (int) b;
System.out.println(Math.abs(i));
Andere Tipps
Ich habe gerade diese Methode für Sie geschrieben.
public static String printUnsignedByte(byte b){
StringBuilder sb = new StringBuilder();
while(b>0){
sb.insert(0, b%2==0?0:1);
b>>=1;
}
for(int i = 8-sb.length(); i>0; i--){
sb.insert(0,0);
}
return sb.toString();
}
Bearbeiten: Aber es umfasst nicht das Format des Komplements von 2. Benötigen Sie das auch? Edit2: Schauen Sie sich an:
Integer.toBinaryString(2)
Es deckt 2ES -Kompliment für negative Werte ab, aber der Ausgang ist zu lang, es wird 4 -Bit erstellt. Verkürzen Sie dies einfach mit Substring und Sie sind fertig.
Bearbeiten 3: Meine endgültige Lösung.
public static String printUnsignedByte(byte b){
if(b>0){
StringBuilder ret = new StringBuilder(Integer.toBinaryString(b));
for(int i = 8-ret.length(); i>0; i--){
ret.insert(0,0);
}
return ret.toString();
}else{
return Integer.toBinaryString(b).substring(24);
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow