Как распечатать байт в формате без знаки на Java
-
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);
}
}
Не связан с StackOverflow