我想将十六进制转换为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
是否有可能再次回来?
答案 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亿个字符)