ASCII kodu (0-255) karşılık gelen karakterine nasıl dönüştürülür?


135

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"

3
bu yukarıda belirtildiği gibi bir kopya değildir. Bu tamsayıdan değil char (ascii) 'den dönüşüm
Chathuranga Chandrasekara

11
Yine de "

1
@phooji Ben bu yazı sais nasıl 1 -> "1" vb dönüştürmek için sais düşünüyorum
Belgi

1
@pst - ASII uzatıldı ;-)
Belgi

3
@Belgi - 128-255 değerlerini doğru bir şekilde kodlamak istiyorsanız kodunuzu açıkça belirtmeniz gerekir. "Genişletilmiş ASCII" terimi anlamlı değildir.
McDowell

Yanıtlar:


244

MIDP 2 için / CLDC 1.1 olmadığı platformlar (esaslı Character.toString(char), stackoverflow.com/a/6210938/923560 ek çözümler sunar.
abdull

(char)Belirlenmenin nedeni nedir ? Başka bir deyişle, neden sadece koyamıyorum Character.toString(i);? (Java noob)
Adam Hughes

1
Bu Integertü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);
gbmhunter

1
iDeğ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.)
Tom Blodget

59

System.out.println((char)65); "A" yazdıracaktı


2
REPL ipucu: JShell (Java 9) kullanıyorsanız, System.out'u atlayabilirsiniz. (char) 65Hangi karakterin olduğunu bulmak için yazmanız yeterlidir.
DavidS

2
Soru, baskı değil dönüştürmeyle ilgili.
iAmLearning

29

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.toCharsbir döküm içeren yöntemlere tercih edilir intiçin char(yani, (char) ibir takım nedenlerden için), bu dahil olmak üzere Character.toChars, bir durum oluşturur IllegalArgumentExceptionDö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ı.


Tamsayı 0 ila 255 arasında olduğunu varsayarsak (yaptığınız gibi ... ve sorunun belirttiği gibi), kullanılması gereksiz ve yetersizdir toChars.
Stephen C

5
Böyle bir şeyin 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.
zjs

8
int number = 65;
char c = (char)number;

basit bir çözüm


4
    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.


1

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));
}

1

Aynı şeyi yapmanın daha kolay bir yolu:

Karaktere cast integer yazın, let int ntam sayı olsun, ardından:

Char c=(char)n;
System.out.print(c)//char c will store the converted value.

0
    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);

Cevabınızı açıklayınız lütfen
want2learn

0

Neden ascii karakterini döndüren bir metoda sadeleştirmiyorsunuz?

public char toAscii (int input) {
    return (char)input;
}

-1

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);
        }
    }
}

-1

üst cevap sadece Sorunu çözmek için. heres cevabınız:

Integer.decode (Character.toString (karakter c));

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.