Как напечатать байт в формате unsign в Java - PullRequest
1 голос
/ 19 марта 2011

Мне нужно напечатать переменную типа byte в формате без знака. Как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 19 марта 2011

Я только что написал этот метод для вас.

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();
}

РЕДАКТИРОВАТЬ: Но это не распространяется на формат дополнения 2. Вам это тоже нужно? РЕДАКТИРОВАТЬ 2: Проверить:

Integer.toBinaryString(2)

это комплимент 2es для отрицательных значений, но вывод слишком длинный, он добавляет 4 бита. Просто сократите это с помощью подстроки, и все готово.

Редактировать 3: Мое окончательное решение.

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);
    }
}
2 голосов
/ 19 марта 2011

Вы говорите, что начинаете со знаком int и хотите получить абсолютное значение? Вы могли бы сделать что-то вроде этого:

    byte b = Byte.parseByte("-9");
    int i = (int) b;

    System.out.println(Math.abs(i));
...