2013-06-20 4 views
1

J'ai une API qui renvoie des données & entre le client et le serveur. Du côté client, il y a un analyseur qui prend ces données et les place dans un fichier de propriétés.Comment convertir un entier hexadécimal en chaîne

J'ai converti les données de chaîne sur le côté serveur à un entier hexadécimal pour éviter d'avoir des problèmes avec mon analyseur parce que je diviser mes données sur des caractères comme ";" et "_". Donc, si mes données contiennent l'un de ces caractères, cela causera des problèmes avec mon analyseur.

server send: SC;4b6579_56616c7565;4b65790a4e65776c696e65_56616c75650a4e65776c696e65;4b65795f556e64657273636f7265_56616c75655f556e64657273636f7265 
client received: SC;4b6579_56616c7565;4b65790a4e65776c696e65_56616c75650a4e65776c696e65;4b65795f556e64657273636f7265_56616c75655f556e64657273636f7265 

donc quelques exemples de données serait

String key = "4b6579"; 
String value = "56616c7565"; 

int hexKey = Integer.parseInt(key, 16); 
int hexValue = Integer.parseInt(value, 16); 

Comment puis-je tourner mon hexKey et hexValue en chaînes?

Le résultat devrait être comme ci-dessous:

  • 4b6579 convertit au mot Key
  • 56616c7565 convertit au mot Value

EDIT: La réponse a été trouvée ici

: Convert a String of Hex into ASCII in Java

+0

Habituellement, il vaut mieux utiliser quelque chose de communément utilisé à la place de l'implémentation personnalisée. Par exemple. vous pouvez utiliser JSON sérialisé à BASE64 pour éliminer la (sérialisation) et le problème de codages différents. Aussi pourriez-vous fournir votre code serveur qui convertit les données du serveur en contenu que vous envoyez. – yatul

+0

Donc vous essayez de convertir la valeur spécifique "4b6579" à la chaîne "clé" spécifique? Dans ce cas, vous devez juste mapper la valeur à une chaîne. Vous pouvez utiliser une simple instruction switch. –

+0

@GilbertLeBlanc c'est un doublon de votre lien, merci. Cela devrait régler mon problème. – JREN

Répondre

2

Voici quelque chose qui pourrait aider:

String hex = "2A"; //The answer is 42 
int intValue = Integer.parseInt(hex, 16); 

//this is the line you want 
String hex = Integer.toHexString(42);//pass in int here 

En outre, vous pouvez facilement utiliser des nombres hexadécimaux en Java au lieu de Cordes.

int[] x = {0xA4, 0x21}; 

EDIT: Si la question initiale signifiait demander comment convertir hex en ASCII, alors je vous recommande de vérifier les éléments suivants:

Convert a String of Hex into ASCII in Java

Sources:

http://www.codebeach.com/2008/02/convert-hex-string-to-integer-and-back.html

+0

C'est la même chose que les autres. Il renvoie KEY: 4b6579 au lieu de KEY: touche – JREN

+0

Vérifiez ma modification. Je crois que c'est ce que vous cherchez. –

+0

Oui c'est. J'ai déjà ajouté la réponse à la question mais merci quand même! – JREN

1

Si vous souhaitez activer le hexKey et hexValue à String, faites-le.

String.valueOf(hexKey); 
String.valueOf(hexValue); 

Au lieu de Integer.parseInt(key, 16), utilisez Long.parseLong(key, 16);

+0

pour hexKey cela me donne 4941177 qui n'est pas la bonne valeur et pour hexValue, il renvoie une exception NumberFormatException. Donc ça ne marche pas. – JREN

+0

Eh bien, votre 'Integer.parseInt' lève une exception. – darijan

+0

Le fait demeure que String.valueOf (hexKey) ne convertit pas mon hexKey au mot Key mais à 4941177 – JREN

0
+0

cela me renvoie KEY: 4b6579 pour moi, ce qui est juste le contenu de hexKey converti de int en String, donc ça ne marche pas – JREN

+0

Je répondais juste à la question: "Comment convertir un entier hexadécimal en chaîne" Il n'y a pas d'hex Entier, il y a juste un entier représenté au format hexadécimal. –

+0

Mais ma question est comment puis-je convertir la valeur hexadécimale en une chaîne? Je pense que la question a été élaborée très clairement. – JREN

Questions connexes