说我有
String input = "Programming", result="\0";
int temp;
for (int i=0;i<input.length();++i) {
temp = input.charAt(i);
result += temp;
}
result
将是8011411110311497109109105110103
。我知道
P = 80
r = 114
o = 111
g = 103
r = 114
a = 97
m = 109
m = 109
i = 105
n = 110
g = 103
出于好奇,是否有可能以简单的方式扭转这一过程?
答案 0 :(得分:1)
你需要做的是假设每个数字位于'A'到'Z'之间,(65到90)或'a'到'z'(97到122)
substring()
如果你可以将它填充到三位数就会更简单,这样你就会知道每三个数字形成一个ASCII字母
只有在字母为的情况下才有效的代码:
public static void main(String[] args) {
String toConvert= "8011411110311497109109105110103";
String result="";
while(toConvert.length()>0){
String digits=toConvert.substring(0, 2);
int num=Integer.valueOf(digits);
if(('A'<=num&&num<='Z')||('a'<=num&&num<='z')){
toConvert=toConvert.substring(2);
}
else{
digits=toConvert.substring(0, 3);
num=Integer.valueOf(digits);
toConvert=toConvert.substring(3);
}
String letter = String.valueOf((char) num);
result+=letter;
}
System.out.println(result);
}
注意如果您将测试更改为num>25
,那么它将适用于所有来自26的ASCII值:对于值26到99,它会将其解释为具有2位数正确地说,对于从100到255的值,它只会查看前2位数字,因此它们将被视为10-25,并将被解释为3位数字