Java'da ASCII kodunu ([0, 255] aralığından bir tam sayıdır) karşılık gelen ASCII karakterine nasıl dönüştürebilirim?
Örneğin:
65 -> "A"
102 -> "f"
Java'da ASCII kodunu ([0, 255] aralığından bir tam sayıdır) karşılık gelen ASCII karakterine nasıl dönüştürebilirim?
Örneğin:
65 -> "A"
102 -> "f"
Yanıtlar:
Character.toString(char)
, stackoverflow.com/a/6210938/923560 ek çözümler sunar.
(char)
Belirlenmenin nedeni nedir ? Başka bir deyişle, neden sadece koyamıyorum Character.toString(i);
? (Java noob)
Integer
tür için çalışmaz , bir "java.lang.Integer java.lang.Character" dönüştürülemez hata alırsınız unutmayın. Bir hakim olmasını int
: birincisi, örneğin Character.toString((char)(int)myInteger);
i
Değerleri (0-255) ISO-8859-1 karakter kümesinden olurdu. (Soru asker, bu cevabı kabul etmek dışında hangi "genişletilmiş ASCII" nin [belirsiz terim] istendiğini belirlemeyi reddetti.)
System.out.println((char)65);
"A" yazdıracaktı
(char) 65
Hangi karakterin olduğunu bulmak için yazmanız yeterlidir.
String.valueOf
(
Character.toChars(int)
)
Tamsayının, 0 ile 255 arasında olduğunu varsayarsak, geriye tek bir karakter içeren bir dizi alırsınız Character.toChars
; bu, iletildiğinde tek karakterli bir dize haline gelir String.valueOf
.
Kullanarak Character.toChars
bir döküm içeren yöntemlere tercih edilir int
için char
(yani, (char) i
bir takım nedenlerden için), bu dahil olmak üzere Character.toChars
, bir durum oluşturur IllegalArgumentException
Döküm (başına hata yutmak ise doğru tamsayı doğrulamak için başarısız olursa daralan ilkel dönüşüm tarifname ) potansiyel olarak vererek istediğin dışında bir çıktı.
toChars
.
Character.toString((char) i)
daha hızlı olduğu konusunda tamamen haklısın String.valueOf(Character.toChars(i))
. Makinemde belirli bir aralıkta 1.000.000 rasgele tam sayıyı dönüştürmek için hızlı bir karşılaştırma yapmak (100 kez, güvenli olmak için), ortalama 153.07 nanosaniye ile 862.39 nanosaniye arasında bir süre verir. Bununla birlikte, herhangi bir ilginç uygulamada, optimize edilecek çok daha önemli şeyler olacaktır. Güvenli, deterministik yol tutuşunun katma değeri ve [0,255] aralığının dışına genişleme kolaylığı, küçük performans vuruşundan daha ağır basacaktır.
new String(new char[] { 65 })
Tek karakteri (ASCII) kodu 65 olan bir uzunluk dizesi ile sonuçlanacaksınız. Java karakterlerinde sayısal veri türleri bulunur.
Bu şekilde a'dan z'ye yineleme yapılabilir
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
Aynı şeyi yapmanın daha kolay bir yolu:
Karaktere cast integer yazın, let int n
tam sayı olsun, ardından:
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);
Neden ascii karakterini döndüren bir metoda sadeleştirmiyorsunuz?
public char toAscii (int input) {
return (char)input;
}
Bu bir int'i char'a dönüştürerek karşılık gelen karakteri bir ASCII koduna belirleyebildiğini gösteren bir örnektir.
public class sample6
{
public static void main(String... asf)
{
for(int i =0; i<256; i++)
{
System.out.println( i + ". " + (char)i);
}
}
}
üst cevap sadece Sorunu çözmek için. heres cevabınız:
Integer.decode (Character.toString (karakter c));