如何将BigInteger字符串转换为ASCII字符串?

时间:2018-05-23 20:36:56

标签: java string

我有两个反向反函数:

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

我的目标是从

中取出字符串
  

&#34;这是我的信息&#34;

将其转换为"8410410511532105115321091213210910111511597103101"

然后将其转换回"This is my message"

我已经尝试了以下操作但是"????is?[ÕÒ?o??ge"作为bigStringToString的输出

返回
String text = String.valueOf(stringToBig("This is my message"));
System.out.println(text);
System.out.println(bigStringToString(text));

我转换回来有什么问题?

1 个答案:

答案 0 :(得分:2)

正如其他人所指出的,您没有考虑不同长度的整数。由于您假设所有字符都是ascii并且长度为3,因此在构造BigInteger的字符串时可以使用此字符:

 sb.append(String.format("%03d", (int) c));