您不能使用十进制数来执行此操作,因为其表示中的位数会发生变化.因此,您将无法区分序列112 5与11 25和1125.
但是,您可以强制每个角色占据正好三位数.在这种情况下,你可以通过重复除以1000来恢复数字,然后取余数:
for (char c : str.toCharArray()) {
String numStr = String.valueOf((int)c);
while (numStr.length() != 3) numStr = "0"+numStr;
sb.append(numStr);
}
如果仅使用UNICODE代码点的ASCII部分,这有点浪费,因为您需要的值大部分是两位数.如果切换到十六进制,则所有ASCII代码点都适合两位数:
for (char c : str.toCharArray()) {
String numStr = Integer.toString(c, 16);
if (numStr.length() == 1) numStr = "0"+numStr;
sb.append(numStr);
}
BigInteger mInt = new BigInteger(sb.toString(), 16);
现在你可以使用除以256而不是1000.