我有两个反函数:
public static BigInteger stringToBig(String message) {
StringBuilder sb = new StringBuilder();
for (char c : message.toCharArray()) {
sb.append((int)c);
}
return new BigInteger(sb.toString());
}
public static String bigStringToString(String string) {
StringBuilder result = new StringBuilder();
for (int x = (string.length() % 3 - 3) % 3; x < string.length(); x += 3) {
int chr = Integer.parseInt(string.substring(Math.max(x, 0), x + 3));
result.append(Character.toString((char) (chr)));
}
return result.toString();
}
我的目标是从
中获取字符串"This is my message"
将其转换为“8410410511532105115321091213210910111511597103101”
然后将其转换回“这是我的消息”
我尝试了以下方法,但得到了 "???is?[ÕÒ?o??ge"
作为 bigStringToString
的输出
String text = String.valueOf(stringToBig("This is my message"));
System.out.println(text);
System.out.println(bigStringToString(text));
我的转换有什么问题吗?
最佳答案
您当前的转换是不可逆的,您可以直接使用 String.getBytes()
中的 byte[]
。并且不要忘记指定编码。比如,
String s = "This is my message";
try {
byte[] enc = s.getBytes("UTF-8");
BigInteger val = new BigInteger(enc);
System.out.println(val);
System.out.println(new String(val.toByteArray(), "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
输出
7352961551138726160548009928799764296591205
This is my message
关于java - 如何将 BigInteger 字符串转换为 ASCII 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50497085/