如何将ASCII码(0-255)转换为相应的字符?


135

如何在Java中将ASCII码(为[0,255]范围内的整数)转换为其相应的ASCII字符?

例如:

65  -> "A"
102 -> "f"

3
如上所述,这不是重复项。这不是从整数转换,而是从char(ascii)转换
Chathuranga Chandrasekara 2011年

11
不能重复“如何从int转换为String?” ...总之,FWIW,ASCII仅为7位,值[

1
@phooji我认为该帖子说了如何转换1->“ 1”等'
Belgi 2011年

1
@pst-它是ASII的扩展;-)
Belgi 2011年

3
@Belgi-如果您想正确地对值128-255进行转码,则需要明确声明您的编码。术语“扩展ASCII”没有意义。
McDowell

Answers:


244

对于MIDP 2 / CLDC 1.1基于平台(其不具有Character.toString(char)stackoverflow.com/a/6210938/923560提供附加的解决方案。
Abdull

(char)指定原因是什么?换句话说,为什么我不能放Character.toString(i);?(爪哇菜鸟)
Adam Hughes

1
请注意,这不适用于该Integer类型,您将收到“ java.lang.Integer无法强制转换为java.lang.Character”错误。首先添加演员表int,例如: Character.toString((char)(int)myInteger);
gbmhunter 2016年

1
i值(0-255)是从ISO-8859-1字符集。(提问者拒绝接受想要的“扩展ASCII”(模糊术语),除非接受此答案。)
Tom Blodget

59

System.out.println((char)65); 会打印“ A”


2
REPL提示:如果碰巧正在使用JShell(Java 9),则可以省略System.out。只需键入(char) 65以找出它是什么字符。
DavidS

2
问题不是关于打印而是转换。
iAmLearning

29

String.valueOf(Character.toChars(int))

假设整数(如您所说)介于0到255之间,您将得到一个数组,其中的单个字符从返回Character.toChars,该数组在传递给时将成为单个字符的字符串String.valueOf

由于多种原因,相对于Character.toChars涉及从from转换intchar(即(char) i)的方法,使用更为可取,其中包括如果您未能正确验证整数而抛出的错误(根据缩小的原始转换规范),Character.toChars则抛出IllegalArgumentException该错误可能会导致输出不是您想要的。


假设整数在0到255之间(如您声明的那样...并按问题所指定),则使用不必要和次优toChars
斯蒂芬·C

5
您完全正确地认为,类似的东西Character.toString((char) i)比更快String.valueOf(Character.toChars(i))。在我的计算机上运行快速基准测试,可以转换给定范围内的1,000,000个随机整数(为安全起见,应进行100次转换),平均时间为153.07纳秒与862.39纳秒。但是,在任何有趣的应用程序中,还有许多重要的事情需要优化。安全,确定性的处理和易于扩展到[0,255]范围之外的附加值,应超过对性能造成的较小影响。
zjs

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

这是一个简单的解决方案


4
    new String(new char[] { 65 })

您将得到一个长度为1的字符串,该字符串的单个字符具有(ASCII)代码65。在Java中,char是数字数据类型。


1

这样可以从a迭代到z

int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
    search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}

1

一种更简单的方法:

将强制类型转换为字符,将int n其设为整数,然后:

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

请解释您的答案
want2learn

0

为什么不将其简化为返回ascii字符的方法?

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

-1

这是一个示例,说明通过将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);
        }
    }
}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.