2017-07-10 6 views
-4

Comment convertir valeurs ASCII à double valeur?Convertir les valeurs ASCII à Valeur double

entrée (valeurs ASCII):

48, 48, 52, 56, 55, 57, 53, 57, 54, 49

sortie attendue (valeur double):

487.959,61

J'ai essayé comme ça, mais pas encore travaillé. Toute orientation est appréciée.

byte[] ascii = new byte[]{48, 48, 52, 56, 55, 57, 53, 57, 54, 49}; 
long lngAscii = ByteBuffer.wrap(ascii).getLong(); 
double result = lngAscii/100; 
Log.i("result:", String.valueOf(result)); // result: 5.2085034998064304E16 
+2

Tout d'abord, que 'byte []' contient "HHRVUWSWTI" en ASCII. Deuxièmement, il est de 10 octets, un 'double 'est de 8 octets. Pourquoi attendez-vous cette valeur particulière? –

+0

@ElliottFrisch Je pense que c'est une chaîne, et il attend la chaîne à lire "487.959,61" en ASCII. Notez que cette chaîne comporte 10 caractères. Bien sûr, il avait toujours les mauvaises valeurs pour cela. –

+1

Voulez-vous dire «0x30,0x30,0x34,0x38,0x37,0x39,0x35,0x39,0x36,0x31»? Et comment êtes-vous censé savoir où le point décimal est censé aller? – EJP

Répondre

1

Votre code pourrait difficilement être plus faux. Vous avez écrit des valeurs ASCII décimales, arbitrairement bloquées 0x devant toutes, puis mal interprété comme une valeur binaire, puis divisé par le mauvais diviseur. Cependant:

byte[] ascii = {48, 48, 52, 56, 55, 57, 53, 57, 54, 49}; 
long lngAscii = Long.parseLong(new String(ascii)); 
double result = lngAscii/100000; 
Log.i("result:", String.valueOf(result)); 
+0

Merci mon frère pour l'aide. Mon problème est résolu. :) – Ihdina