Я только что написал этот метод для вас.
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);
}
}