Domanda

Sto cercando di convertire un singolo numero in virgola mobile di precisione in una rappresentazione ASCII dei quattro byte che lo compongono (segno / esponente / mantissa). Il mio codice attuale è:

Integer.toString(Float.floatToRawIntBits(f),16);

Float.floatToRawIntBits crea un numero intero usando gli stessi byte, quindi Integer.toString crea le cifre ASCII in forma esadecimale (da cui il radix = 16 specificato). Il mio problema è che ho sempre bisogno di 8 caratteri ASCII più il segno '-' opzionale e Integer.toString non è riempito con zero sul lato sinistro.

Qualcuno può trovare una soluzione elegante?

Grazie.

È stato utile?

Soluzione

Puoi usare String.format () :

String.format("%08x", Float.floatToRawIntBits(f))

Questo azzererà il risultato e lo formatterà come un numero esadecimale. I dettagli sulle stringhe di formato sono disponibili qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top