studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java string formatting hex twos-complement

java - para - manual de programacion android pdf



String.format() y números hexadecimales en Java (2)

El ancho del formato solo funciona para crear un número mínimo de dígitos, y solo tiene efecto en los ceros a la izquierda.

En lugar de subcadena, podría usar una máscara de bits:

String.format("%05X", decInt & 0x0FFFFF)

Por cierto, 11 -> 0000B , no 0000A como se afirma en su pregunta.

Estoy tratando de descubrir por qué String.format() se comporta de la manera en que lo hace.

Contexto: clase de programación de sistemas, escribir un ensamblador.

Hay un campo hexadecimal de 5 caracteres en el archivo objeto, que estoy creando a partir de un valor.

Intentado usar: String.format("%05X", decInt);

Esto funciona según lo previsto para números positivos (11 -> 0000B ) Sin embargo, falla para números negativos (-1 -> FFFFFFFF lugar de FFFFF )

Supongo que podría tomar una subcadena de los últimos 5 caracteres, pero aún me gustaría descubrir por qué se comporta de esta manera.


El ancho utilizado en formato siempre es un ancho mínimo. En este caso, en lugar de usar operaciones de subcadena, sugeriría:

String.format("%05X", decInt & 0xFFFFF);