2017-09-28 3 views
0

Je veux convertir un hexagone en int et inversement.Convertir un nombre entier en hexadécimal en Java

Hex int *:

String input = "˜"; 
char charValue = new String(input.getBytes(), "ISO-8859-1").charAt(0); 
int intValue = (int) charValue; //=152 
String hexString = Integer.toHexString(intValue); //=98 

Est-il possible d'obtenir le ~ de retour?

+0

Un tilde n'est pas hexadécimal ou hexadécimal. Pouvez-vous expliquer la combinaison des opérations que vous faites? –

+0

Il n'y a pas de "numéro hexadécimal" (contre "int" "décimal"). Ce sont des formes externes de la même chose. Quand les gens auront 14 doigts, la base sera 14, mais le nombre de pêches dans le basker reste le même –

Répondre

2

Le ˜ n'est pas un tilde, il est le caractère avec unicode 732.

Lorsque vous convertissez à un octet [], vous obtenez deux octets si vous utilisez UTF-8, -53 et -100

Toutefois, si vous ignorez le deuxième et le convertir en un char vous obtenez 152 (qui est -53 & 0xFF)

vous avez un certain nombre de transformations qui lossy rend impossible de les inverser.

Ce que vous pouvez faire est de convertir le caractère en hexadécimal et vice-versa.

String input = "˜"; 
String hex = DatatypeConverter.printHexBinary(input.getBytes("UTF-16BE")); 
System.out.println("hex: "+hex); 
String input2 = new String(DatatypeConverter.parseHexBinary(hex), "UTF-16BE"); 
System.out.println("input2: "+input2); 

impressions

hex: 02DC 
input2: ˜ 

Cela fonctionne pour des chaînes arbitraires (de moins d'un demi-milliard de caractères)

+0

A travaillé! Merci beaucoup! – PaPaNi