Bagaimana saya bisa mengubah, di Jawa, kode ASCII (yang merupakan integer dari kisaran [0, 255]) ke karakter ASCII yang sesuai?
Sebagai contoh:
65 -> "A"
102 -> "f"
Bagaimana saya bisa mengubah, di Jawa, kode ASCII (yang merupakan integer dari kisaran [0, 255]) ke karakter ASCII yang sesuai?
Sebagai contoh:
65 -> "A"
102 -> "f"
Jawaban:
Character.toString(char), stackoverflow.com/a/6210938/923560 menyediakan solusi tambahan.
(char)penunjukannya? Dengan kata lain, mengapa saya tidak bisa mengatakannya begitu saja Character.toString(i);? (Java noob)
Integerjenisnya, Anda akan mendapatkan kesalahan "java.lang.Integer tidak dapat dilemparkan ke java.lang.Character". Tambahkan pemeran ke yang intpertama, misalnya: Character.toString((char)(int)myInteger);
inilai (0-255) akan dari ISO-8859-1 set karakter. (Penanya menolak untuk mengidentifikasi "ASCII diperpanjang" [istilah samar] mana yang diinginkan, kecuali dengan menerima jawaban ini.)
System.out.println((char)65);
akan mencetak "A"
(char) 65untuk mengetahui karakter apa itu.
String.valueOf(Character.toChars(int))
Dengan asumsi bilangan bulat, seperti yang Anda katakan, antara 0 dan 255, Anda akan mendapatkan larik dengan satu karakter kembali dari Character.toChars, yang akan menjadi string karakter tunggal saat diteruskan ke String.valueOf.
Penggunaan Character.toCharslebih disukai daripada metode yang melibatkan cast from intto char(yaitu (char) i) karena sejumlah alasan, termasuk yang Character.toCharsakan menampilkan IllegalArgumentExceptionjika Anda gagal memvalidasi integer dengan benar sementara cast akan menelan error (sesuai spesifikasi konversi primitif yang mempersempit ), berpotensi memberikan keluaran selain dari yang Anda inginkan.
toChars.
Character.toString((char) i)itu lebih cepat dari String.valueOf(Character.toChars(i)). Menjalankan tolok ukur cepat untuk mengubah 1.000.000 bilangan bulat acak dalam rentang yang diberikan (100 kali, agar aman) di mesin saya memberikan waktu rata-rata 153,07 nanodetik vs. 862,39 nanodetik. Namun, dalam aplikasi yang menarik, akan ada hal yang jauh lebih penting untuk dioptimalkan. Nilai tambah dari penanganan yang aman, deterministik, dan kemudahan memperluas di luar kisaran [0,255] jika diperlukan lebih besar daripada hit kinerja minor.
new String(new char[] { 65 })
Anda akan mendapatkan string dengan panjang satu, yang karakter tunggalnya memiliki kode (ASCII) 65. Dalam Java karakter adalah tipe data numerik.
Seseorang dapat beralih dari a ke z seperti ini
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
Cara yang lebih mudah untuk melakukan hal yang sama:
Ketik cast integer to character, misalkan int nintegernya, lalu:
Char c=(char)n;
System.out.print(c)//char c will store the converted value.
for (int i = 0; i < 256; i++) {
System.out.println(i + " -> " + (char) i);
}
char lowercase = 'f';
int offset = (int) 'a' - (int) 'A';
char uppercase = (char) ((int) lowercase - offset);
System.out.println("The uppercase letter is " + uppercase);
String numberString = JOptionPane.showInputDialog(null,
"Enter an ASCII code:",
"ASCII conversion", JOptionPane.QUESTION_MESSAGE);
int code = (int) numberString.charAt(0);
System.out.println("The character for ASCII code "
+ code + " is " + (char) code);
Mengapa tidak menyederhanakannya menjadi metode yang mengembalikan karakter ascii?
public char toAscii (int input) {
return (char)input;
}
Ini adalah contoh, yang menunjukkan bahwa dengan mengubah int menjadi char, seseorang dapat menentukan karakter terkait ke kode ASCII.
public class sample6
{
public static void main(String... asf)
{
for(int i =0; i<256; i++)
{
System.out.println( i + ". " + (char)i);
}
}
}
jawaban atas hanya mendekati memecahkan Masalah. inilah jawaban Anda:
Integer.decode (Character.toString (char c));