在Java中将整数转换为十六进制

时间:2017-09-28 14:31:30

标签: java int hex

我想将十六进制转换为int并再次转换回来。

Hex to 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

是否有可能再次回来?

1 个答案:

答案 0 :(得分:2)

˜不是波浪号,它是unicode 732的字符。

当你将它转换为byte []时,如果使用UTF-8,-53和-100

,则会得到两个字节

但是,如果您忽略第二个并将其转换为char,则会得到152(即-53和0xFF)

你有许多有损变换,这使得它们无法逆转它们。

你可以做的是将角色转换为十六进制,然后再转回。

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: ˜

这适用于任意字符串(少于5亿个字符)