ini bukan duplikat seperti yang disebutkan di atas. Ini bukan konversi dari integer tetapi dari char (ascii)
Chathuranga Chandrasekara
11
Bukan duplikat dari "Bagaimana mengkonversi dari int ke String?" ... bagaimanapun, FWIW, ASCII hanya 7-bit dengan nilai [0, 127] ;-)
1
@phooji Saya pikir posting itu adalah cara mengonversi 1 -> "1" dll '
Belgi
1
@pst - diperpanjang ASII ;-)
Belgi
3
@ Belgi - Anda harus menyatakan pengkodean secara eksplisit jika Anda ingin mentranskode nilai 128-255 dengan benar. Istilah "ASCII diperpanjang" tidak berarti.
Untuk platform berbasis MIDP 2 / CLDC 1.1 (yang tidak ada Character.toString(char), stackoverflow.com/a/6210938/923560 menyediakan solusi tambahan.
Abdull
Apa alasan (char)penunjukannya? Dengan kata lain, mengapa saya tidak bisa mengatakannya begitu saja Character.toString(i);? (Java noob)
Adam Hughes
1
Perhatikan bahwa ini tidak akan berfungsi untuk 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);
gbmhunter
1
The 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.)
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.
Dengan asumsi bahwa integer berada dalam kisaran 0 sampai 255 (seperti yang Anda nyatakan ... dan seperti yang ditentukan oleh pertanyaan), itu tidak perlu dan kurang optimal untuk digunakan toChars.
Stephen C
5
Anda sepenuhnya benar bahwa sesuatu seperti 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.
Jawaban:
Character.toString ((char) i);
sumber
Character.toString(char)
, stackoverflow.com/a/6210938/923560 menyediakan solusi tambahan.(char)
penunjukannya? Dengan kata lain, mengapa saya tidak bisa mengatakannya begitu sajaCharacter.toString(i);
? (Java noob)Integer
jenisnya, Anda akan mendapatkan kesalahan "java.lang.Integer tidak dapat dilemparkan ke java.lang.Character". Tambahkan pemeran ke yangint
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"sumber
(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 keString.valueOf
.Penggunaan
Character.toChars
lebih disukai daripada metode yang melibatkan cast fromint
tochar
(yaitu(char) i
) karena sejumlah alasan, termasuk yangCharacter.toChars
akan menampilkanIllegalArgumentException
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.sumber
toChars
.Character.toString((char) i)
itu lebih cepat dariString.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.int number = 65; char c = (char)number;
ini adalah solusi sederhana
sumber
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.
sumber
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)); }
sumber
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.
sumber
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);
sumber
Mengapa tidak menyederhanakannya menjadi metode yang mengembalikan karakter ascii?
public char toAscii (int input) { return (char)input; }
sumber
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); } } }
sumber
jawaban atas hanya mendekati memecahkan Masalah. inilah jawaban Anda:
Integer.decode (Character.toString (char c));
sumber