2017-09-28 6 views
0

16進数をintに変換して元に戻したい。整数を16進数に変換する

六角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 

は、再び〜を取得することが可能ですか?あなたは[]バイトに変換するとき

+0

のために動作します。あなたが行っている操作の組み合わせについて説明できますか? –

+0

'16進数'のようなものはありません。これらは同じ外形です。人々が14の指を持つとき、ベースは14になりますが、バスマの桃の数は同じままです –

答えて

2

˜がチルダではない、それはユニコード732

と文字で、あなたがUTF-8を使用する場合、2つのバイトを取得-53と-100

しかし、あなたが二番目のを無視してcharに変換する場合は、

(-53 & 0xFFである)あなたはそれは不可能それらを逆にすることができ、非可逆変換の数を持っている152を取得します。

できることは、文字を16進数に変換して元に戻すことです。

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); 

プリント

hex: 02DC 
input2: ˜ 

これはチルダはヘクス又は16進ではない(以下億半分よりも文字の)任意の文字列

+0

Worked!どうもありがとうございました! – PaPaNi

関連する問題