Question

J'essaie de convertir un nombre à virgule flottante simple précision en une représentation ascii des quatre octets qui le composent (signe / exposant / mantisse). Mon code actuel est:

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

Float.floatToRawIntBits crée un entier utilisant les mêmes octets, puis Integer.toString crée les chiffres ASCII sous forme hexadécimale (d'où le radix = 16 spécifié). Mon problème est que j'ai toujours besoin de 8 caractères ascii plus le signe optionnel '-', et Integer.toString ne remplit pas avec des zéros à gauche.

Quelqu'un peut-il proposer une solution élégante?

Merci.

Était-ce utile?

La solution

Vous pouvez utiliser String.format () :

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

Ceci aura pour effet de mettre le résultat à zéro et de le formater en tant que nombre hexadécimal. Des détails sur les chaînes de format peuvent être trouvés ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top