Tôi có String name = "admin";
rồi tôi làmString char = name.substring(0,1); //char="a"
Tôi muốn chuyển đổi char
giá trị ASCII của nó (97), làm thế nào tôi có thể làm điều này trong java?
Tôi có String name = "admin";
rồi tôi làmString char = name.substring(0,1); //char="a"
Tôi muốn chuyển đổi char
giá trị ASCII của nó (97), làm thế nào tôi có thể làm điều này trong java?
Câu trả lời:
Rất đơn giản. Chỉ cần đúc của bạn char
như là một int
.
char character = 'a';
int ascii = (int) character;
Trong trường hợp của bạn, trước tiên bạn cần lấy Ký tự cụ thể từ Chuỗi và sau đó bỏ nó.
char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.
Mặc dù diễn viên không được yêu cầu rõ ràng, nhưng nó cải thiện khả năng đọc.
int ascii = character; // Even this will do the trick.
int ascii = (int)name.charAt(0);
Thay vì điều này:
String char = name.substring(0,1); //char="a"
Bạn nên sử dụng charAt()
phương pháp.
char c = name.charAt(0); // c='a'
int ascii = (int)c;
Một số câu trả lời có ý định chỉ ra cách thực hiện điều này đều sai vì các ký tự Java không phải là ký tự ASCII. Java sử dụng mã hóa đa chuỗi các ký tự Unicode. Bộ ký tự Unicode là một bộ siêu mã ASCII. Vì vậy, có thể có các ký tự trong chuỗi Java không thuộc ASCII. Các ký tự như vậy không có giá trị số ASCII, vì vậy, hỏi làm thế nào để có được giá trị số ASCII của một ký tự Java là không thể trả lời được.
Nhưng tại sao bạn vẫn muốn làm điều này? Bạn sẽ làm gì với giá trị?
Nếu bạn muốn giá trị số để bạn có thể chuyển đổi Chuỗi Java thành chuỗi ASCII, câu hỏi thực sự là "làm cách nào để mã hóa Chuỗi Java thành ASCII". Đối với điều đó, sử dụng các đối tượng StandardCharsets.US_ASCII
.
Nếu bạn muốn chuyển đổi toàn bộ chuỗi thành các giá trị ASCII được nối thì bạn có thể sử dụng chuỗi này -
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);
trong đó bạn sẽ nhận được 979899 làm đầu ra.
Tín dụng này .
Tôi chỉ sao chép nó ở đây để nó thuận tiện cho người khác.
Chuyển đổi char thành int.
String name = "admin";
int ascii = name.toCharArray()[0];
Cũng thế :
int ascii = name.charAt(0);
Chỉ cần bỏ char đến một int.
char character = 'a';
int number = (int) character;
Giá trị của number
sẽ là 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]);
}
}
}
Thật đơn giản, có được nhân vật bạn muốn và chuyển đổi nó thành int.
String name = "admin";
int ascii = name.charAt(0);
Tôi biết điều này đã được trả lời dưới nhiều hình thức nhưng đây là đoạn mã của tôi với một cái nhìn để đi qua tất cả các ký tự.
Đây là mã, bắt đầu với lớp
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
và char
. Một đơn vị văn bản trong Unicode là một biểu đồ, là một điểm mã cơ sở theo sau là các điểm mã kết hợp bằng 0 hoặc nhiều hơn. Một điểm mã, trong Java, được mã hóa bằng UTF-16, có thể yêu cầu một hoặc hai đơn vị mã 16 bit ( char
) cho một điểm mã. Để lặp lại các điểm mã, xem câu trả lời này . Mã đã sẵn sàng cho ví dụ TAY UF 1F91E sắp ra mắt với mật mã INDEX VÀ TRUNG GIAN CROSSED, ví dụ.
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
}
Như @Raedwald đã chỉ ra, Unicode của Java không phục vụ cho tất cả các ký tự để nhận giá trị ASCII. Cách chính xác (Java 1.7+) như sau:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
new String(byte[])
sử dụng một ký tự khác mã hóa cho cái gọi là mặc định hệ thống, thay đổi theo thời gian, máy móc và người dùng; hầu như không bao giờ hữu ích. Những gì bạn gọi asciiString
vẫn là UTF-16 vì đó là tất cả Java có.
sử dụng Java 9 => String.chars ()
String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));
đầu ra - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
Nếu bạn muốn giá trị ASCII của tất cả các ký tự trong Chuỗi. Bạn có thể sử dụng điều này:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
và nếu bạn muốn ASCII của một ký tự trong Chuỗi, bạn có thể tìm:
(int)a.charAt(index);
Tôi đã thử điều tương tự, nhưng giải pháp tốt nhất và dễ dàng nhất là sử dụng charAt và để truy cập các chỉ mục, chúng ta nên tạo một mảng số nguyên có kích thước [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.
Trong trường hợp nếu bạn muốn hiển thị các giá trị ascii của Chuỗi hoàn chỉnh, bạn cần thực hiện việc này.
String name = "admin";
char[] val = name.toCharArray();
for(char b: val) {
int c = b;
System.out.println("Ascii value of " + b + " is: " + c);
}
Đầu ra của bạn, trong trường hợp này, sẽ là: Giá trị Ascii của a là: 97 Giá trị Ascii của d là: 100 Giá trị Ascii của m là: 109 Giá trị Ascii của i là: 105 Giá trị Ascii của n là: 110
Cách dễ dàng để làm điều này là:
Đối với toàn bộ Chuỗi thành 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)
đưa ra một ký tự duy nhất của mảng String: Khi chúng ta gán từng ký tự cho kiểu số nguyên thì trình biên dịch thực hiện chuyển đổi kiểu như,
arr[i] = (int) character // Here, every individual character is coverted in ascii value
Nhưng, đối với nhân vật duy nhất:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
Để làm điều này, chúng ta có thể sử dụng String classe's ngay lập tức
input.codePointAt(index);
Tôi muốn đưa ra một đề nghị nữa là chuyển toàn bộ chuỗi thành mã ascii tương ứng, sử dụng java 8 chẳng hạn, "abcde" thành "979899100101".
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
String char
biên dịch. Có thể bạn muốn đổi tên biến thànhString ch