ฉันจะแปลงรหัส ASCII ใน Java (ซึ่งเป็นจำนวนเต็มจากช่วง [0, 255]) เป็นอักขระ ASCII ที่สอดคล้องกันใน Java ได้อย่างไร
ตัวอย่างเช่น:
65 -> "A"
102 -> "f"
ฉันจะแปลงรหัส ASCII ใน Java (ซึ่งเป็นจำนวนเต็มจากช่วง [0, 255]) เป็นอักขระ ASCII ที่สอดคล้องกันใน Java ได้อย่างไร
ตัวอย่างเช่น:
65 -> "A"
102 -> "f"
คำตอบ:
Character.toString(char)
, stackoverflow.com/a/6210938/923560ให้บริการโซลูชั่นเพิ่มเติม.
(char)
กำหนดคืออะไร? อีกอย่างทำไมใส่Character.toString(i);
ไม่ได้? (Java noob)
Integer
ประเภทคุณจะได้รับข้อผิดพลาด "java.lang.Integer ไม่สามารถส่งไปยัง java.lang.Character" เพิ่มนักแสดงint
ก่อนเช่น Character.toString((char)(int)myInteger);
i
ค่า (0-255) จะมาจาก ISO-8859-1 ชุดอักขระ (ผู้ถามปฏิเสธที่จะระบุว่าต้องการ "ASCII แบบขยาย" ใด [คำที่คลุมเครือ] ยกเว้นการยอมรับคำตอบนี้)
System.out.println((char)65);
จะพิมพ์ "A"
(char) 65
เพื่อค้นหาว่าเป็นตัวอักษรใด
String.valueOf
(
Character.toChars(int)
)
สมมติว่าจำนวนเต็มคือเป็นคุณจะพูดว่าระหว่าง 0 และ 255 คุณจะได้รับอาเรย์ด้วยตัวอักษรกลับเดียวจากซึ่งจะกลายเป็นสายเดียวตัวเมื่อผ่านไปCharacter.toChars
String.valueOf
ใช้Character.toChars
เป็นที่นิยมในวิธีการที่เกี่ยวข้องกับการโยนจากint
ไปchar
(เช่น(char) i
) สำหรับจำนวนของเหตุผลรวมทั้งที่Character.toChars
จะโยนIllegalArgumentException
ถ้าคุณล้มเหลวที่จะต้องตรวจสอบจำนวนเต็มในขณะที่นักแสดงจะกลืนข้อผิดพลาด (ต่อกวดขันข้อกำหนดการแปลงดั้งเดิม ) ที่อาจเกิดขึ้นให้ ผลลัพธ์ที่นอกเหนือจากที่คุณต้องการ
toChars
มันเป็นเรื่องที่ไม่จำเป็นและก่อให้เกิดผลลัพธ์กับการใช้งาน
Character.toString((char) i)
String.valueOf(Character.toChars(i))
การใช้เกณฑ์มาตรฐานอย่างรวดเร็วในการแปลงจำนวนเต็มแบบสุ่ม 1,000,000 จำนวนในช่วงที่กำหนด (100 ครั้งเพื่อความปลอดภัย) บนเครื่องของฉันให้เวลาเฉลี่ย 153.07 นาโนวินาทีเทียบกับ 862.39 นาโนวินาที อย่างไรก็ตามในแอปพลิเคชั่นที่น่าสนใจจะมีสิ่งที่สำคัญกว่ามากในการเพิ่มประสิทธิภาพ มูลค่าที่เพิ่มขึ้นของการจัดการที่ปลอดภัยการจัดการที่กำหนดได้และความสะดวกในการขยายออกนอกช่วง [0,255] ควรจะมีมากกว่าการตีประสิทธิภาพเล็กน้อย
int number = 65;
char c = (char)number;
มันเป็นวิธีง่ายๆ
new String(new char[] { 65 })
คุณจะได้สตริงที่มีความยาวหนึ่งซึ่งอักขระเดี่ยวมีรหัส (ASCII) 65 ในอักขระ Java เป็นชนิดข้อมูลตัวเลข
เราสามารถวนซ้ำจาก a ถึง z ได้เช่นนี้
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
วิธีที่ง่ายกว่าในการทำเช่นเดียวกัน:
พิมพ์จำนวนเต็มกับอักขระปล่อยให้int n
เป็นจำนวนเต็มจากนั้น:
Char c=(char)n;
System.out.print(c)//char c will store the converted value.
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);
ทำไมไม่ลดความซับซ้อนให้เป็นวิธีที่ส่งกลับอักขระ ascii?
public char toAscii (int input) {
return (char)input;
}
นี่คือตัวอย่างที่แสดงให้เห็นว่าการแปลง int เป็น char หนึ่งสามารถกำหนดอักขระที่เกี่ยวข้องกับรหัส ASCII ได้
public class sample6
{
public static void main(String... asf)
{
for(int i =0; i<256; i++)
{
System.out.println( i + ". " + (char)i);
}
}
}
คำตอบด้านบนใกล้เคียงกับการแก้ปัญหาเท่านั้น นี่คือคำตอบของคุณ:
Integer.decode (Character.toString (ถ่าน c));