我可能在这里有点愚蠢,但我似乎无法想到这个问题的直接解决方案。Java ASCII控制代码到文字值
我目前得到一个int [],其中包含ASCII字符代码,但是,对于ASCII表,任何值< 32是一个控制代码。所以我需要做的是对于大于32的任何值,将ASCII字符放到char []中,但是如果它是< 32,只需将文字整数值作为字符。
例如:
public static void main(String[] args) {
int[] input = {57, 4, 31}; //57 is the only valid ASCII character '9'
char[] output = new char[3];
for (int i = 0; i < input.length; i++) {
if (input[i] < 32) { //If it's a control code
System.out.println("pos " + i + " Not an ascii symbol, it's a control code");
output[i] = (char) input[i];
} else { //If it's an actual ASCII character
System.out.println("pos " + i + " Ascii character, add to array");
output[i] = (char) input[i];
}
}
System.out.println("\nOutput buffer contains:");
for (int i = 0; i < output.length; i++) {
System.out.println(output[i]);
}
}
输出是:
pos 0 Ascii character, add to array
pos 1 Not an ascii symbol, it's a control code
pos 2 Not an ascii symbol, it's a control code
Output buffer contains:
9 // int value 57, this is OK
正如你可以看到数组中的最后两个项目都是空白,因为没有实际的或者4的ASCII字符,或31.我知道有一些方法可以将Strings
转换为char[]
,但是当你已经有了一个你想要值的char []时,总的想法是什么。
这可能是一个非常简单的解决方案,我想我只是有一个愚蠢的时刻!
任何意见将不胜感激,谢谢!
也许字符打印空白? – Evans
问题是,ASCII表<31中的任何int值不是字母数字字符,在这种情况下,我只想要文字值,例如, '4'和'31'。 – Tony
他们实际上是打印的。问题是,一些控制字符表示为int可能有两个数字,所以他们可能不会是字符... – Mateusz