2009-06-23 10 views
3

J'essaie de convertir un nombre à virgule flottante simple précision en une représentation ASCII des quatre octets qui le font (signe/exponent/mantisse). Mon code actuel est:Comment est-ce que je peux remplir la représentation sous forme de chaîne d'un flottant?

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

Float.floatToRawIntBits fait un nombre entier en utilisant les mêmes octets, puis Integer.toString crée les chiffres ASCII sous forme hexagonale (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 rembourre pas avec les zéros du côté gauche.

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

Merci.

Répondre

8

Vous pouvez utiliser String.format():

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

Cela-pad zéro le résultat et le formater en nombre hexadécimal. Les détails sur les chaînes de format peuvent être trouvés here.

+1

Élégant et parfaitement fonctionnel. Merci beaucoup!! – apalopohapa

Questions connexes