Frage

Ich muss eine Variable vom Typ drucken byte in einem nicht signierten Format. Wie mache ich das?

War es hilfreich?

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
scroll top