Cómo imprimir byte en formato sin firmar en Java
-
27-10-2019 - |
Pregunta
Necesito imprimir una variable de tipo byte
en un formato sin firmar. ¿Cómo puedo hacer eso?
Solución
¿Estás diciendo que estás comenzando con un INT firmado y quieres el valor absoluto? Podrías hacer algo como esto:
byte b = Byte.parseByte("-9");
int i = (int) b;
System.out.println(Math.abs(i));
Otros consejos
Acabo de escribir ese método para ti.
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();
}
Editar: pero no cubre el formato del complemento de los 2. ¿Necesitas eso también? Edit2: Echa un vistazo:
Integer.toBinaryString(2)
Cubre el cumplido de 2E por valores negativos, pero la salida es demasiado larga, pribe 4 bits. Solo acorta esto con la subcadena y terminaste.
Editar 3: Mi solución final.
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);
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow