Saya punya String name = "admin";
kemudian saya lakukanString char = name.substring(0,1); //char="a"
Saya ingin mengonversi char
ke nilai ASCII (97), bagaimana saya bisa melakukan ini di java?
Saya punya String name = "admin";
kemudian saya lakukanString char = name.substring(0,1); //char="a"
Saya ingin mengonversi char
ke nilai ASCII (97), bagaimana saya bisa melakukan ini di java?
Jawaban:
Sangat sederhana. Hanya melemparkan Anda char
sebagai 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.
int ascii = (int)name.charAt(0);
Alih-alih ini:
String char = name.substring(0,1); //char="a"
Anda harus menggunakan charAt()
metode ini.
char c = name.charAt(0); // c='a'
int ascii = (int)c;
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
.
Jika Anda ingin mengonversi seluruh string menjadi nilai ASCII bersambung maka Anda dapat menggunakan ini -
String str = "abc"; // or anything else
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
sb.append((int)c);
BigInteger mInt = new BigInteger(sb.toString());
System.out.println(mInt);
dimana kamu akan mendapatkan 979899 sebagai output.
Penghargaan untuk ini .
Saya hanya menyalinnya di sini sehingga akan nyaman bagi orang lain.
Ubah char menjadi int.
String name = "admin";
int ascii = name.toCharArray()[0];
Juga:
int ascii = name.charAt(0);
Hanya melemparkan arang ke int.
char character = 'a';
int number = (int) character;
Nilai number
akan menjadi 97.
public class Ascii {
public static void main(String [] args){
String a=args[0];
char [] z=a.toCharArray();
for(int i=0;i<z.length;i++){
System.out.println((int)z[i]);
}
}
}
Sederhana, dapatkan karakter yang Anda inginkan, dan konversikan ke int.
String name = "admin";
int ascii = name.charAt(0);
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
public class CheckChValue { // Class name
public static void main(String[] args) { // class main
String name = "admin"; // String to check it's value
int nameLenght = name.length(); // length of the string used for the loop
for(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 character
int ascii = (int) character; //convert the first character
System.out.println(character+" = "+ ascii); // print the character and it's value in ascii
}
}
}
string
dan 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.
String str = "abc"; // or anything else
// Stores strings of integer representations in sequence
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
sb.append((int)c);
// store ascii integer string array in large integer
BigInteger mInt = new BigInteger(sb.toString());
System.out.println(mInt);
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:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
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 asciiString
masih UTF-16 karena hanya itu yang dimiliki Java.
menggunakan Java 9 => String.chars ()
String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));
hasil - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
Jika Anda ingin nilai ASCII dari semua karakter dalam sebuah String. Anda bisa menggunakan ini:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
dan jika Anda ingin ASCII dari satu karakter dalam sebuah String, Anda dapat memilih:
(int)a.charAt(index);
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 = new int[128]; //this will allocate space with 128byte size.
letters[ascii]++; //increments the value of 97 to 1;
System.out.println("Output:" + ascii); //Outputs 97
System.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
Cara mudah untuk melakukan ini adalah:
Untuk seluruh String ke ASCII:
public class ConvertToAscii{
public static void main(String args[]){
String abc = "admin";
int []arr = new int[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 ascii
System.out.print(" "+arr[i]);
}
}
}
THe asscii value of each character is:
97 100 109 105 110
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 input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
String char
pernah dikompilasi. Mungkin Anda ingin mengubah nama variabel menjadiString ch