Как распечатать байт в формате без знаки на Java

StackOverflow https://stackoverflow.com/questions/5363579

  •  27-10-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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. Вам это тоже нужно? EDIT2: Проверьте:

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);
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top