2008-12-12 9 views
0

Je suis Begginer en Java Je lis les données du port série et j'ai stocké les données dans la chaîne de données de tableau est de longueur de 24 octets.convertir la chaîne de caractères hexadécimale en entier en Java

données Je reçois en sortie: 12120814330006050.0

données contient également le caractère hexadécimal dans la chaîne que je veux lire en premier caractère de la chaîne. Je l'ai fait:

String str=dispArray[i].substring(1,2); 
int i= Integer.parseInt(str,16); 
System.out.println("Decimal:="+ i); 

Mais je reçois NumberFormatException.plz me aider à lire le caractère hexadécimal.

Merci pour la réponse

+0

Les caractères spéciaux dans cette question cassent le fil RSS pour moi :-( – Athena

+0

Êtes-vous rohit ou gopal? Ces données ont d'abord été examinées dans http://stackoverflow.com/questions/336289/vc-60-serial- communicaton, donc vous faîtes soit des identifiants d'utilisateur pour le diable ou c'est un matériel identique. – paxdiablo

Répondre

3

caractères simples que vous pouvez obtenir à partir d'une chaîne avec

str.getChar(0); 

Quand vous savez que la chaîne contient des valeurs hexagonales dans tous les caractères que vous ne devez pas convertir chaque caractère. Vous pouvez placer la chaîne complète et récupérer la valeur dec de la chaîne hexadécimale. Sinon, vous calculez seulement 1 valeur hexadécimale et devez multiplier avec le numéro d'index de la position du caractère.

Pour l'analyse syntaxique à une valeur hexadécimale, vous pouvez appeler

Integer.parseInt(str,16); 
0

chaînes Java sont unicode - (? Probablement UTF-8) de sorte que les octets ont déjà été décodé en utilisant un codage.

Alors:

  1. Vérifiez le contenu de la chaîne.
  2. Vérifiez le contenu de la sous-chaîne.
1

Il semble que votre flux de données contienne réellement un mélange de données binaires et de texte. Il est très important (OMI) que vous ne pas essayer de stocker le tout dans une chaîne. Conservez-le en tant que données binaires et convertissez les morceaux appropriés en texte lorsque vous en avez besoin. Cela peut vouloir dire changer la façon dont vous lisez du port série en premier lieu - utiliser des API qui traitent des octets et des tableaux d'octets au lieu de chars et de chaînes.