Làm cách nào tôi có thể chuyển đổi, trong Java, mã ASCII (là số nguyên từ phạm vi [0, 255]) sang ký tự ASCII tương ứng của nó?
Ví dụ:
65 -> "A"
102 -> "f"
Làm cách nào tôi có thể chuyển đổi, trong Java, mã ASCII (là số nguyên từ phạm vi [0, 255]) sang ký tự ASCII tương ứng của nó?
Ví dụ:
65 -> "A"
102 -> "f"
Câu trả lời:
Character.toString(char)
, stackoverflow.com/a/6210938/923560 cung cấp các giải pháp bổ sung.
(char)
chỉ định là gì? Nói cách khác, tại sao tôi không thể đặt Character.toString(i);
? (Java noob)
Integer
loại, bạn sẽ nhận được lỗi "java.lang.Integer không thể chuyển sang java.lang.Character". Thêm một diễn viên vào int
đầu tiên, ví dụ: Character.toString((char)(int)myInteger);
i
giá trị (0-255) sẽ từ bộ ký tự ISO-8859-1. (Người hỏi đã từ chối xác định "ASCII mở rộng" [thuật ngữ mơ hồ] muốn, ngoại trừ bằng cách chấp nhận câu trả lời này.)
System.out.println((char)65);
sẽ in "A"
(char) 65
để tìm ra nó là nhân vật.
String.valueOf
(
Character.toChars(int)
)
Giả sử số nguyên là, như bạn nói, từ 0 đến 255, bạn sẽ nhận được một mảng có một ký tự trở lại Character.toChars
, sẽ trở thành một chuỗi ký tự đơn khi được chuyển đến String.valueOf
.
Sử dụng Character.toChars
là thích hợp hơn với các phương pháp liên quan đến một dàn diễn viên từ int
đến char
(ví dụ (char) i
) đối với một số lý do, kể cả đó Character.toChars
sẽ ném một IllegalArgumentException
nếu bạn thất bại trong việc xác nhận đúng số nguyên trong khi các diễn viên sẽ nuốt lỗi (theo thu hẹp chuyển đổi nguyên thủy đặc điểm kỹ thuật ), có khả năng đưa ra một đầu ra khác với những gì bạn dự định.
toChars
.
Character.toString((char) i)
là nhanh hơn String.valueOf(Character.toChars(i))
. Chạy một điểm chuẩn nhanh để chuyển đổi 1.000.000 số nguyên ngẫu nhiên trong phạm vi nhất định (100 lần, để an toàn) trên máy của tôi cho thời gian trung bình là 153,07 nano giây so với 862,39 nano giây. Tuy nhiên, trong bất kỳ ứng dụng thú vị nào, sẽ có nhiều thứ quan trọng hơn để tối ưu hóa. Giá trị gia tăng của xử lý an toàn, xác định và dễ dàng mở rộng ra ngoài phạm vi [0,255] nên được yêu cầu vượt xa hiệu suất nhỏ.
int number = 65;
char c = (char)number;
nó là một giải pháp đơn giản
new String(new char[] { 65 })
Bạn sẽ kết thúc với một chuỗi có độ dài một, có một ký tự duy nhất có mã (ASCII) 65. Trong các ký tự Java là các kiểu dữ liệu số.
Người ta có thể lặp từ a đến z như thế này
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
Một cách dễ dàng hơn để làm như vậy:
Nhập số nguyên vào ký tự, hãy int n
là số nguyên, sau đó:
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);
Tại sao không đơn giản hóa nó thành một phương thức trả về ký tự ascii?
public char toAscii (int input) {
return (char)input;
}
Đây là một ví dụ, cho thấy bằng cách chuyển đổi một int thành char, người ta có thể xác định ký tự tương ứng thành mã ASCII.
public class sample6
{
public static void main(String... asf)
{
for(int i =0; i<256; i++)
{
System.out.println( i + ". " + (char)i);
}
}
}
câu trả lời trên chỉ gần giải quyết vấn đề. Đây là câu trả lời của bạn:
Integer.decode (Character.toString (char c));