import java.lang.*;
public class asciiHex{
public static void main(String args[]){
String ascii1 = "e v e r y s e c o n d c h a r";
String hex = "";
String ascii2 = "";
char[] chars = ascii1.toCharArray();
for(int i = 0; i < ascii1.length(); i++){
hex += (Integer.toHexString( (int)chars[i]));
}
System.out.println(ascii1);
System.out.println(hex);
for(int i = 0; i < hex.length(); i+=2){
String temp = hex.substring(i, i+=2);
ascii2 += ((char)Integer.parseInt(temp, 16));
}
System.out.println(ascii2);
}
}
这是我的代码。它应该采用一个字符串并将其从ascii转换为十六进制,然后再返回。当我运行程序时,它会以某种方式丢失每一个字符。我很确定这是我使用子串的方式有问题,但我不明白为什么它会这样做。
感谢。
答案 0 :(得分:3)
您将计数器(i
)递增两次,这就是为什么它会跳过每一秒的字符:
for(int i = 0; i < hex.length(); i+=2){ // <-- first increment
String temp = hex.substring(i, i+=2); // <-- second increment
ascii2 += ((char)Integer.parseInt(temp, 16));
}
应该是:
for(int i = 0; i < hex.length(); i+=2) { // <-- increment here
String temp = hex.substring(i, i+2); // <-- do not increment here
ascii2 += ((char)Integer.parseInt(temp, 16));
}
答案 1 :(得分:2)
您有2个实例已完成i+=2
。
在for循环for(int i = 0; i < hex.length(); i+=2)
中,也在子串String temp = hex.substring(i, i+=2);
中。
让String temp = hex.substring(i, i+2);
使其按预期工作。