JW akan String charpernah dikompilasi. Mungkin Anda ingin mengubah nama variabel menjadiString ch
Vikas Prasad
ASCII? Apakah Anda yakin itu yang Anda inginkan? Java menggunakan pengkodean karakter UTF-16 dari rangkaian karakter Unicode (seperti halnya JavaScript, .NET, VBA, VB4 / 5/6, NCHAR, NVARCHAR, NTFS, Windows API, ...). Jawabannya terbagi dalam beberapa kategori: menjawab tentang ASCII secara eksplisit, menjawab tentang UTF-16 dan menjawab tentang ASCII melalui beberapa lompatan pintas dari UTF-16 (dan juga ada yang salah).
Tom Blodget
Jawaban:
297
Sangat sederhana. Hanya melemparkan Anda charsebagai int.
char character ='a';int ascii =(int) character;
Dalam kasus Anda, Anda harus mendapatkan Karakter spesifik dari String terlebih dahulu dan kemudian melemparkannya.
char character = name.charAt(0);// This gives the character 'a'int ascii =(int) character;// ascii is now 97.
Meskipun pemeran tidak diperlukan secara eksplisit, tetapi pemerannya meningkatkan keterbacaan.
int ascii = character;// Even this will do the trick.
Hanya untuk mengingat bahwa "char" adalah kata khusus di Jawa.
Dingin
12
Beberapa jawaban yang dimaksudkan untuk menunjukkan bagaimana melakukan ini semua salah karena karakter Java bukan karakter ASCII. Java menggunakan pengkodean multibyte karakter Unicode. Set karakter Unicode adalah set super ASCII. Jadi bisa ada karakter dalam string Java yang bukan milik ASCII. Karakter seperti itu tidak memiliki nilai numerik ASCII, jadi bertanya bagaimana cara mendapatkan nilai numerik ASCII dari karakter Java tidak bisa dijawab.
Tetapi mengapa Anda tetap ingin melakukan ini? Apa yang akan Anda lakukan dengan nilainya?
Jika Anda menginginkan nilai numerik sehingga Anda dapat mengonversi String Java ke string ASCII, pertanyaan sebenarnya adalah "bagaimana cara menyandikan String Java sebagai ASCII". Untuk itu, gunakan objek StandardCharsets.US_ASCII.
Jawaban sempurna. Tipe casting hanya jalan pintas yang tidak akurat. Senang jawaban Anda datang di awal sehingga orang tidak salah paham konsep.
Karthik R
Alasan saya harus tahu string ASCII adalah karena saya punya data Unicode yang masuk ke proses backend yang perlu menempatkan ASCII murni di tempat lain, dan saya perlu ketika saya mendapatkan non-Unicode. Biasanya ketika pengguna menyalin paste dari MS Word (mis. Kutipan bengkok dan tunggal, tanda hubung panjang, dll.). Menyebut StandardCharsets.US_ASCII adalah hal yang benar untuk dilakukan, tetapi itu tidak memberi tahu penanya asli bagaimana cara menggunakannya.
Tihamer
public String displayAsciiCode statis (String s, boolean useStandard) {String r = ""; byte [] ascii = null; if (useStandard) {ascii = s.getBytes (StandardCharsets.US_ASCII); untuk (int i = 0; i <ascii.length; i ++) {byte b = ascii [i]; r = r + "" + s.charAt (i) + "=" + (int) b; }} else {ascii = s.getBytes (); untuk (int i = 0; i <ascii.length; i ++) {byte b = ascii [i]; r = r + "" + Character.toString ((char) ascii [i]) + "=" + (int) b; }} return r; }
Tihamer
Panggil yang di atas dengan: String string = "This" is "odd"; System.out.println ("string =" + string); System.out.println (displayAsciiCode (string, true)); System.out.println (displayAsciiCode (string, false)); Hasilnya adalah: string = Ini "adalah" aneh T = 84 jam = 104 i = 105 s = 115 = 32 "= 63 i = 105 s = 115" = 63 = 32 s = 115 t = 116 r = 114 a = 97 n = 110 g = 103 e = 101 T = 84 h = 104 i = 105 s = 115 = 32 ¬ = -30 タ = -128 ワ = -100 i = 105 s = 115 ¬ = -30 タ = -128ン = -99 = 32 s = 115 t = 116 r = 114 a = 97 n = 110 g = 103 e = 101
Tihamer
10
Jika Anda ingin mengonversi seluruh string menjadi nilai ASCII bersambung maka Anda dapat menggunakan ini -
String str ="abc";// or anything elseStringBuilder sb =newStringBuilder();for(char c : str.toCharArray())
sb.append((int)c);BigInteger mInt =newBigInteger(sb.toString());System.out.println(mInt);
dimana kamu akan mendapatkan 979899 sebagai output.
Sementara potongan kode ini dapat menyelesaikan pertanyaan, termasuk penjelasan sangat membantu untuk meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, dan orang-orang itu mungkin tidak tahu alasan untuk saran kode Anda.
DimaSan
1
Sederhana, dapatkan karakter yang Anda inginkan, dan konversikan ke int.
Saya tahu ini sudah dijawab dalam beberapa bentuk tetapi di sini ada sedikit kode saya dengan pandangan untuk memeriksa semua karakter.
Ini kodenya, dimulai dengan kelas
publicclassCheckChValue{// Class namepublicstaticvoid main(String[] args){// class mainString name ="admin";// String to check it's valueint nameLenght = name.length();// length of the string used for the loopfor(int i =0; i < nameLenght ; i++){// while counting characters if less than the length add one char character = name.charAt(i);// start on the first characterint ascii =(int) character;//convert the first characterSystem.out.println(character+" = "+ ascii);// print the character and it's value in ascii}}
Java menggunakan Unicode untuk stringdan char. Unit tekstual di Unicode adalah grapheme, yang merupakan basis kode dasar diikuti oleh nol atau lebih gabungan titik kode. Codepoint, di Jawa, dikodekan dalam UTF-16, yang bisa memerlukan satu atau dua unit kode 16-bit ( char) untuk codepoint. Untuk mengulangi codepoint, lihat jawaban ini . Kode harus sudah siap untuk TANGAN U + 1F91E yang akan datang dengan INDEX DAN FINGER MIDDLE CROSSED codepoint, misalnya.
Tom Blodget
1
String str ="abc";// or anything else// Stores strings of integer representations in sequenceStringBuilder sb =newStringBuilder();for(char c : str.toCharArray())
sb.append((int)c);// store ascii integer string array in large integerBigInteger mInt =newBigInteger(sb.toString());System.out.println(mInt);
Meskipun kode ini dapat menjawab pertanyaan, lebih baik menjelaskan apa yang dilakukannya dan menambahkan beberapa referensi ke dalamnya.
Hamid Pourjam
1
String name ="admin";char[] ch = name.toString().toCharArray();//it will read and store each character of String and store into char[].for(int i=0; i<ch.length; i++){System.out.println(ch[i]+"-->"+(int)ch[i]);//this will print both character and its value}
Seperti @Raedwald tunjukkan, Java's Unicode tidak melayani semua karakter untuk mendapatkan nilai ASCII. Cara yang benar (Java 1.7+) adalah sebagai berikut:
new String(byte[])menggunakan pengkodean karakter lain — yang disebut sistem default, yang bervariasi menurut waktu, mesin, dan pengguna; hampir tidak pernah berguna. Yang Anda panggil asciiStringmasih UTF-16 karena hanya itu yang dimiliki Java.
Tom Blodget
@ TomBlodget, saya setuju. Tapi saya pikir OP ingin tahu bagaimana mendapatkan representasi ASCII dari karakter yang diberikan. Ini hanya penyandian karena java tidak dapat melakukan ASCII mentah
Karthik R
1
Cara mudah untuk ini adalah:
int character ='a';
Jika Anda mencetak "karakter", Anda mendapatkan 97.
Saya mencoba hal yang sama, tetapi solusi terbaik dan mudah adalah dengan menggunakan karakter dan untuk mengakses indeks kita harus membuat array integer dengan ukuran [128].
String name ="admin";int ascii = name.charAt(0);int[] letters =newint[128];//this will allocate space with 128byte size.
letters[ascii]++;//increments the value of 97 to 1;System.out.println("Output:"+ ascii);//Outputs 97System.out.println("Output:"+ letters[ascii]);//Outputs 1 if you debug you'll see 97th index value will be 1.
Jika Anda ingin menampilkan nilai ascii dari String lengkap, Anda perlu melakukan ini.
String name ="admin";char[] val = name.toCharArray();for(char b: val){int c = b;System.out.println("Ascii value of "+ b +" is: "+ c);}
Output Anda, dalam hal ini, akan menjadi: Nilai Ascii dari is is: 97 Nilai ascii dari d adalah: 100 Nilai ascii dari m adalah: 109 Nilai ascii dari i adalah: 105 Nilai ascii dari n adalah: 110
publicclassConvertToAscii{publicstaticvoid main(String args[]){String abc ="admin";int[]arr =newint[abc.length()];System.out.println("THe asscii value of each character is: ");for(int i=0;i<arr.length;i++){
arr[i]= abc.charAt(i);// assign the integer value of character i.e asciiSystem.out.print(" "+arr[i]);}}}
Outputnya adalah:
THe asscii value of each character is:
97 100 109 105 110
Di sini, abc.charAt(i)berikan karakter tunggal dari array String: Ketika kita menetapkan setiap karakter ke tipe integer, kompiler melakukan konversi tipe sebagai,
arr[i] = (int) character // Here, every individual character is coverted in ascii value
Tapi, untuk karakter tunggal:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
Untuk ini kita bisa langsung menggunakan class String
input.codePointAt(index);
Saya ingin memberikan satu saran lagi agar seluruh string dikonversi ke kode ascii yang sesuai, menggunakan java 8 misalnya, "abcde" menjadi "979899100101".
String char
pernah dikompilasi. Mungkin Anda ingin mengubah nama variabel menjadiString ch
Jawaban:
Sangat sederhana. Hanya melemparkan Anda
char
sebagaiint
.Dalam kasus Anda, Anda harus mendapatkan Karakter spesifik dari String terlebih dahulu dan kemudian melemparkannya.
Meskipun pemeran tidak diperlukan secara eksplisit, tetapi pemerannya meningkatkan keterbacaan.
sumber
int ascii = (int)name.charAt(0);
hanya pendekatan yang berbeda
bytes[0]
akan mewakili ascii dari .. dan dengan demikian karakter lain di seluruh array.sumber
Alih-alih ini:
Anda harus menggunakan
charAt()
metode ini.sumber
Beberapa jawaban yang dimaksudkan untuk menunjukkan bagaimana melakukan ini semua salah karena karakter Java bukan karakter ASCII. Java menggunakan pengkodean multibyte karakter Unicode. Set karakter Unicode adalah set super ASCII. Jadi bisa ada karakter dalam string Java yang bukan milik ASCII. Karakter seperti itu tidak memiliki nilai numerik ASCII, jadi bertanya bagaimana cara mendapatkan nilai numerik ASCII dari karakter Java tidak bisa dijawab.
Tetapi mengapa Anda tetap ingin melakukan ini? Apa yang akan Anda lakukan dengan nilainya?
Jika Anda menginginkan nilai numerik sehingga Anda dapat mengonversi String Java ke string ASCII, pertanyaan sebenarnya adalah "bagaimana cara menyandikan String Java sebagai ASCII". Untuk itu, gunakan objek
StandardCharsets.US_ASCII
.sumber
Jika Anda ingin mengonversi seluruh string menjadi nilai ASCII bersambung maka Anda dapat menggunakan ini -
dimana kamu akan mendapatkan 979899 sebagai output.
Penghargaan untuk ini .
Saya hanya menyalinnya di sini sehingga akan nyaman bagi orang lain.
sumber
Ubah char menjadi int.
Juga:
sumber
Hanya melemparkan arang ke int.
Nilai
number
akan menjadi 97.sumber
sumber
Sederhana, dapatkan karakter yang Anda inginkan, dan konversikan ke int.
sumber
Saya tahu ini sudah dijawab dalam beberapa bentuk tetapi di sini ada sedikit kode saya dengan pandangan untuk memeriksa semua karakter.
Ini kodenya, dimulai dengan kelas
}
sumber
string
danchar
. Unit tekstual di Unicode adalah grapheme, yang merupakan basis kode dasar diikuti oleh nol atau lebih gabungan titik kode. Codepoint, di Jawa, dikodekan dalam UTF-16, yang bisa memerlukan satu atau dua unit kode 16-bit (char
) untuk codepoint. Untuk mengulangi codepoint, lihat jawaban ini . Kode harus sudah siap untuk TANGAN U + 1F91E yang akan datang dengan INDEX DAN FINGER MIDDLE CROSSED codepoint, misalnya.sumber
sumber
Seperti @Raedwald tunjukkan, Java's Unicode tidak melayani semua karakter untuk mendapatkan nilai ASCII. Cara yang benar (Java 1.7+) adalah sebagai berikut:
sumber
new String(byte[])
menggunakan pengkodean karakter lain — yang disebut sistem default, yang bervariasi menurut waktu, mesin, dan pengguna; hampir tidak pernah berguna. Yang Anda panggilasciiString
masih UTF-16 karena hanya itu yang dimiliki Java.Cara mudah untuk ini adalah:
Jika Anda mencetak "karakter", Anda mendapatkan 97.
sumber
Atau Anda dapat menggunakan Stream API untuk 1 karakter atau String yang dimulai di Java 1.8:
sumber
menggunakan Java 9 => String.chars ()
hasil - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
sumber
Anda dapat memeriksa nomor ASCII dengan kode ini.
Jika saya salah, permintaan maaf.
sumber
Jika Anda ingin nilai ASCII dari semua karakter dalam sebuah String. Anda bisa menggunakan ini:
dan jika Anda ingin ASCII dari satu karakter dalam sebuah String, Anda dapat memilih:
sumber
Saya mencoba hal yang sama, tetapi solusi terbaik dan mudah adalah dengan menggunakan karakter dan untuk mengakses indeks kita harus membuat array integer dengan ukuran [128].
Jika Anda ingin menampilkan nilai ascii dari String lengkap, Anda perlu melakukan ini.
Output Anda, dalam hal ini, akan menjadi: Nilai Ascii dari is is: 97 Nilai ascii dari d adalah: 100 Nilai ascii dari m adalah: 109 Nilai ascii dari i adalah: 105 Nilai ascii dari n adalah: 110
sumber
Cara mudah untuk melakukan ini adalah:
Untuk seluruh String ke ASCII:
Outputnya adalah:
THe asscii value of each character is: 97 100 109 105 110
Di sini,
abc.charAt(i)
berikan karakter tunggal dari array String: Ketika kita menetapkan setiap karakter ke tipe integer, kompiler melakukan konversi tipe sebagai,arr[i] = (int) character // Here, every individual character is coverted in ascii value
Tapi, untuk karakter tunggal:
String name = admin; asciiValue = (int) name.charAt(0);// for character 'a' System.out.println(asciiValue);
sumber
Untuk ini kita bisa langsung menggunakan class String
Saya ingin memberikan satu saran lagi agar seluruh string dikonversi ke kode ascii yang sesuai, menggunakan java 8 misalnya, "abcde" menjadi "979899100101".
sumber