Pergunta

Estou tentando converter um único número de ponto flutuante de precisão em uma representação ASCII dos quatro bytes que o fazem (signo/exponente/mantissa). Meu código atual é:

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

Float.floatToRawIntBits faz um número inteiro usando os mesmos bytes e depois Integer.toString Cria os dígitos ASCII na forma hexadecimal (daí o radix = 16 especificado). Meu problema é que eu sempre preciso de 8 caracteres ASCII mais o sinal opcional '-' e Integer.toString não está preenchendo com zeros do lado esquerdo.

Alguém pode criar uma solução elegante?

Obrigado.

Foi útil?

Solução

Você pode usar String.Format ():

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

Isso zero-pad do resultado e o formará como um número hexadecimal. Detalhes sobre seqüências de formato podem ser encontrados aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top