ฉันมีString name = "admin";
แล้วฉันจะทำString char = name.substring(0,1); //char="a"
ฉันต้องการแปลงค่าchar
เป็น ASCII (97) ฉันจะทำสิ่งนี้ใน java ได้อย่างไร
ฉันมีString name = "admin";
แล้วฉันจะทำString char = name.substring(0,1); //char="a"
ฉันต้องการแปลงค่าchar
เป็น ASCII (97) ฉันจะทำสิ่งนี้ใน java ได้อย่างไร
คำตอบ:
ง่ายมาก. เพียงแค่โยนของคุณเป็นchar
int
char character = 'a';
int ascii = (int) character;
ในกรณีของคุณคุณจะต้องได้รับตัวละครที่เฉพาะเจาะจงจากสตริงก่อนแล้วจึงส่งมัน
char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.
แม้ว่าจะไม่จำเป็นต้องใช้การร่ายอย่างชัดเจน แต่ก็ปรับปรุงการอ่านได้ง่าย
int ascii = character; // Even this will do the trick.
int ascii = (int)name.charAt(0);
เป็นเพียงแนวทางที่แตกต่าง
String s = "admin";
byte[] bytes = s.getBytes("US-ASCII");
bytes[0]
จะเป็นตัวแทนของ ASCII ของ .. และทำให้ตัวละครอื่น ๆ ในอาร์เรย์ทั้งหมด
แทนสิ่งนี้:
String char = name.substring(0,1); //char="a"
คุณควรใช้charAt()
วิธีการ
char c = name.charAt(0); // c='a'
int ascii = (int)c;
คำตอบหลายข้อที่แสดงให้เห็นว่าทำสิ่งนี้ผิดทั้งหมดเพราะอักขระ Java ไม่ใช่อักขระ ASCII Java ใช้การเข้ารหัสแบบหลายไบต์ของอักขระ Unicode ชุดอักขระ Unicode เป็นชุดสุดของ ASCII ดังนั้นอาจมีอักขระในสตริง Java ที่ไม่ได้เป็นของ ASCII อักขระดังกล่าวไม่มีค่าตัวเลข ASCII ดังนั้นการถามวิธีรับค่าตัวเลข ASCII ของอักขระ Java นั้นไม่สามารถตอบได้
แต่ทำไมคุณถึงต้องการทำเช่นนี้? คุณจะทำอย่างไรกับมูลค่า
หากคุณต้องการค่าตัวเลขเพื่อให้คุณสามารถแปลงสตริง Java เป็นสตริง ASCII คำถามจริงคือ "ฉันจะเข้ารหัสสตริง Java เป็น ASCII ได้อย่างไร" StandardCharsets.US_ASCII
เพื่อที่จะใช้วัตถุ
หากคุณต้องการที่จะแปลงสตริงทั้งหมดเป็นค่า ASCII ที่ต่อกันคุณสามารถใช้สิ่งนี้ -
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);
ประเด็นที่คุณจะได้รับ 979899 เป็นเอาท์พุท
เครดิตกับสิ่งนี้นี้
ฉันเพิ่งคัดลอกมาที่นี่เพื่อสะดวกสำหรับผู้อื่น
แปลงถ่านให้เป็น int
String name = "admin";
int ascii = name.toCharArray()[0];
ยัง:
int ascii = name.charAt(0);
เพียงแค่โยนถ่านให้กับ int
char character = 'a';
int number = (int) character;
ค่าของnumber
จะเป็น 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]);
}
}
}
ง่ายรับตัวละครที่คุณต้องการและแปลงเป็น int
String name = "admin";
int ascii = name.charAt(0);
ฉันรู้ว่าคำตอบนี้ได้รับการตอบแล้วในหลายรูปแบบ แต่นี่คือรหัสบิตของฉันพร้อมกับดูอักขระทั้งหมด
นี่คือรหัสเริ่มต้นด้วยชั้นเรียน
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
char
หน่วยข้อความใน Unicode คือกราฟซึ่งเป็น codepoint ฐานตามด้วยศูนย์หรือมากกว่าการรวม codepoints codepoint ใน Java ถูกเข้ารหัสใน UTF-16 ซึ่งอาจต้องใช้หนึ่งหรือสองหน่วยรหัส 16 บิต ( char
) สำหรับ codepoint หากต้องการย้ำรหัสไกด์พอยน์ดูคำตอบนี้ รหัสควรพร้อมสำหรับ U + 1F91E ที่กำลังจะมาถึงพร้อมกับมือและดัชนีนิ้วกลางครอปเพด codepoint เป็นต้น
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
}
@Raedwald ชี้ให้เห็นว่า Unicode ของ Java ไม่ได้ตอบสนองกับตัวละครทั้งหมดเพื่อรับค่า ASCII วิธีที่ถูกต้อง(Java 1.7+)มีดังนี้:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
new String(byte[])
ยังใช้การเข้ารหัสอักขระอื่นซึ่งเป็นค่าเริ่มต้นของระบบซึ่งแตกต่างกันไปตามเวลาเครื่องจักรและผู้ใช้ แทบไม่มีประโยชน์เลย สิ่งที่คุณโทรasciiString
ยังคงเป็น UTF-16 เพราะนั่นคือ Java ทั้งหมดที่มี
วิธีง่าย ๆ สำหรับสิ่งนี้คือ:
int character = 'a';
หากคุณพิมพ์ "ตัวอักษร" คุณจะได้รับ 97
หรือคุณสามารถใช้ Stream API สำหรับ 1 ตัวอักษรหรือ String เริ่มต้นใน Java 1.8:
public class ASCIIConversion {
public static void main(String[] args) {
String text = "adskjfhqewrilfgherqifvehwqfjklsdbnf";
text.chars()
.forEach(System.out::println);
}
}
ใช้ Java 9 => String.chars ()
String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));
เอาท์พุท - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
คุณสามารถตรวจสอบหมายเลข ASCII ด้วยรหัสนี้
String name = "admin";
char a1 = a.charAt(0);
int a2 = a1;
System.out.println("The number is : "+a2); // the value is 97
หากฉันผิดขอโทษ
หากคุณต้องการค่า ASCII ของตัวละครทั้งหมดในสตริง คุณสามารถใช้สิ่งนี้:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
และถ้าคุณต้องการ ASCII ของตัวละครเดียวใน String คุณสามารถไป:
(int)a.charAt(index);
ฉันกำลังลองสิ่งเดียวกัน แต่วิธีแก้ปัญหาที่ง่ายและดีที่สุดคือการใช้ charAt และการเข้าถึงดัชนีเราควรสร้างอาร์เรย์จำนวนเต็มขนาด [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.
ในกรณีที่คุณต้องการแสดงค่า ascii ของ String ที่สมบูรณ์คุณต้องทำสิ่งนี้
String name = "admin";
char[] val = name.toCharArray();
for(char b: val) {
int c = b;
System.out.println("Ascii value of " + b + " is: " + c);
}
ผลลัพธ์ของคุณในกรณีนี้จะเป็น: ค่า ASCII ของ a คือ: 97 ค่า ASCII ของ d คือ: 100 ค่า ASCII ของ m คือ: 109 ค่า ASCII ของ i คือ: 105 ค่า Ascii ของ n คือ: 110
วิธีง่ายๆในการทำเช่นนี้คือ:
สำหรับ String ทั้งหมดเข้าสู่ 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)
ให้อักขระตัวเดียวของอาร์เรย์สตริง: เมื่อเรากำหนดอักขระแต่ละตัวให้เป็นประเภทจำนวนเต็มคอมไพเลอร์จะแปลงชนิดเป็น
arr[i] = (int) character // Here, every individual character is coverted in ascii value
แต่สำหรับตัวอักษรเดียว:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
สำหรับสิ่งนี้เราสามารถใช้สตริงคลาสได้ทันที
input.codePointAt(index);
ฉันต้องการให้คำแนะนำเพิ่มเติมอีกหนึ่งข้อเพื่อให้ได้รับการแปลงสตริงทั้งหมดเป็นรหัส ASCII ที่สอดคล้องกันโดยใช้ Java 8 ตัวอย่างเช่น "abcde" ถึง "979899100101"
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
String char
เคยรวบรวม อาจเป็นคุณต้องการเปลี่ยนชื่อตัวแปรเป็นString ch