EG。必须将BRYR904000Z5转换为数字格式 (A = 101,B = 102,C = 103 ....你得到它直到Z = 126)
我想BRYR904000Z5为1021181251189040001265
我还想知道是否可以显示整个号码。 (使用密码生成器)
我看到了一个用来分隔角色的代码,但这对我来说很难理解。谢谢
答案 0 :(得分:2)
这是算法的骨架:
答案 1 :(得分:1)
如果我们处理所有大写字母,就像我们一样,A
的{{3}}值为65.因此,为了让A
成为101 ,我们要添加36:
/*Expects only capital letters*/
public int charToIntCustomConversion(char c)
{
return (int) c + 36;
}
(int) c
获取c
的ASCII值并返回int
+ 36。
转换回来:
/*Expects only capital letters*/
public char intToCharCustomConversion(int n)
{
return (char) (n - 36);
}
修改强>
如果有任何混淆,请原谅我,上述方法仅用于从char
转换为int
和int
转换为char
。您不需要转换数字,因为它们保持不变,即只需将它们添加到String
即可。
换句话说,当你遇到一封信时(再次假设所有人都是大写),循环通过String
并拨打charToIntCustomConversion
,如果遇到一个号码,只需将其添加到转换后的字符串中。 / p>
回到最初的String
有点棘手,但这似乎并不是你所要求的,但是,如果你知道一个int
对一个被转换的角色有同感,你可以使用intToCharCustomConversion
。
转换回来:
如果您希望能够轻松确定已转换 String
中的数字是否与原始String
中的字符或数字相对应,那么最简单的操作可能就是是使用数组。如果转换数组中的元素是单个数字,则表示它原来是一个数字。如果它是一个3位数字,您知道它原来是char
。
注意:
还有更多,可能更好的方法来做到这一点。
答案 2 :(得分:0)
StringBuilder result = new StringBuilder();
for(int i =0; i < string.length(); ++i) {
char c = string.charAt(i);
if (Character.isLetter(c) {
result.append(c - 0x0041 + 101);
} else if (Character.isDigit) {
result.append(c);
} else throw new RuntimeException("BS");
}
0x0041代表大写字母A的unicode。