杰瑞科技汇

Java中如何将ASCII码转换成字符?

强制类型转换

最直接、最常用的方法是使用 Java 的强制类型转换((char)),因为 char 类型在 Java 中本质上是 16 位的无符号 Unicode 字符,它可以直接存储一个 ASCII 值。

Java中如何将ASCII码转换成字符?-图1
(图片来源网络,侵删)

语法

char character = (char) asciiValue;

asciiValue 是一个 int 类型的数值。


示例代码

下面是一个完整的 Java 示例,展示了如何将单个 ASCII 码和 ASCII 码数组转换成字符。

public class AsciiToChar {
    public static void main(String[] args) {
        // --- 示例 1:将单个 ASCII 码转换为字符 ---
        int asciiCode1 = 65;  // 'A' 的 ASCII 码
        int asciiCode2 = 97;  // 'a' 的 ASCII 码
        int asciiCode3 = 48;  // '0' 的 ASCII 码
        int asciiCode4 = 33;  // '!' 的 ASCII 码
        // 使用强制类型转换 (char)
        char char1 = (char) asciiCode1;
        char char2 = (char) asciiCode2;
        char char3 = (char) asciiCode3;
        char char4 = (char) asciiCode4;
        System.out.println("ASCII 码 " + asciiCode1 + " 对应的字符是: " + char1);
        System.out.println("ASCII 码 " + asciiCode2 + " 对应的字符是: " + char2);
        System.out.println("ASCII 码 " + asciiCode3 + " 对应的字符是: " + char3);
        System.out.println("ASCII 码 " + asciiCode4 + " 对应的字符是: " + char4);
        System.out.println("------------------------------------");
        // --- 示例 2:将 ASCII 码数组转换为字符串 ---
        int[] asciiCodes = {72, 101, 108, 108, 111}; // "Hello" 的 ASCII 码数组
        StringBuilder sb = new StringBuilder();
        for (int code : asciiCodes) {
            // 将每个 ASCII 码转换为字符并追加到 StringBuilder 中
            sb.append((char) code);
        }
        String resultString = sb.toString();
        System.out.println("ASCII 码数组 " + java.util.Arrays.toString(asciiCodes) + " 对应的字符串是: " + resultString);
    }
}

输出结果

ASCII 码 65 对应的字符是: A
ASCII 码 97 对应的字符是: a
ASCII 码 48 对应的字符是: 0
ASCII 码 33 对应的字符是: !
------------------------------------
ASCII 码数组 [72, 101, 108, 108, 111] 对应的字符串是: Hello

重要注意事项:charString 的区别

这是一个非常常见的初学者错误,当你把一个数字 int 强制转换成 char 后,它就变成了一个字符,如果你想在输出时直接打印这个数字本身,而不是它代表的字符,你需要把它转换回 String

错误示范

int myAscii = 65;
char myChar = (char) myAscii;
// 错误:这会打印字符 'A'
System.out.println(myChar); 
// 错误:这也会打印字符 'A',因为 println 会自动调用 myChar 的 toString() 方法
System.out.println(myChar + ""); 

正确示范(打印数字本身)

如果你想在输出中显示数字 65 而不是字符 A,你需要将 int 类型的数字转换为 String

Java中如何将ASCII码转换成字符?-图2
(图片来源网络,侵删)
int myAscii = 65;
char myChar = (char) myAscii;
// 方法1:直接打印 int 变量
System.out.println("字符是: " + myChar + ", 它的ASCII码是: " + myAscii); 
// 方法2:将 char 转换为 String 来显示其数字表示
// 这需要使用 Character 类的 getNumericValue() 方法,但请注意,它主要用于获取数字字符的值。
// 对于显示码点,更直接的方法是先转 int。
System.out.println("字符是: " + myChar + ", 它的ASCII码是: " + (int)myChar); 

输出:

字符是: A, 它的ASCII码是: 65
字符是: A, 它的ASCII码是: 65

替代方法:Character.forDigit()

这个方法有特定的用途,不适用于通用的 ASCII 转换,它主要用于将一个数字(0-15)转换为其对应的十六进制字符('0'-'9', 'a'-'f')。

// 将数字 10 转换为十六进制字符 'a'
char hexChar = Character.forDigit(10, 16); // 第二个参数是进制
System.out.println(hexChar); // 输出 a
// 将数字 15 转换为十六进制字符 'f'
char hexChar2 = Character.forDigit(15, 16);
System.out.println(hexChar2); // 输出 f
// 这不是将 ASCII 码 10 转换为换行符!
// char wrongChar = Character.forDigit(10, 10); // 会抛出 IllegalArgumentException,因为 10 不是 10 进制的有效数字

对于将 ASCII 码(0-127)转换为对应字符,请始终使用强制类型转换 (char),这是最正确、最高效的方法。

任务 推荐方法 示例
将单个 ASCII 码(int)转换为字符(char) 强制类型转换 char c = (char) 65;
将 ASCII 码数组转换为字符串 循环 + StringBuilder + 强制类型转换 for (int code : codes) { sb.append((char)code); }
打印字符的 ASCII 码值 char 强制转换回 int System.out.println((int) 'A');
将数字转换为十六进制字符 Character.forDigit() char c = Character.forDigit(10, 16);
分享:
扫描分享到社交APP
上一篇
下一篇