我可能在這裏有點愚蠢,但我似乎無法想到這個問題的直接解決方案。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