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)
Integer
jenisnya, Anda akan mendapatkan kesalahan "java.lang.Integer tidak dapat dilemparkan ke java.lang.Character". Tambahkan pemeran ke yang int
pertama, misalnya: Character.toString((char)(int)myInteger);
i
nilai (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) 65
untuk 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.toChars
lebih disukai daripada metode yang melibatkan cast from int
to char
(yaitu (char) i
) karena sejumlah alasan, termasuk yang Character.toChars
akan menampilkan IllegalArgumentException
jika 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 n
integernya, 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));