杰瑞科技汇

java 获取字符的ascii

在 Java 中,获取字符的 ASCII 码非常简单,因为 char 类型本身就是一个 16 位的无符号整数,它直接表示 Unicode 码点,对于 ASCII 字符(Unicode 码点在 0-127 之间),其 Unicode 码点就是 ASCII 码。

java 获取字符的ascii-图1
(图片来源网络,侵删)

以下是几种获取字符 ASCII 码的方法:

直接强制类型转换 (最常用)

这是最直接、最常用的方法,将 char 类型强制转换为 int 类型即可得到其对应的 Unicode 码点(对于 ASCII 字符就是 ASCII 码)。

public class AsciiExample {
    public static void main(String[] args) {
        char ch = 'A';
        // 将 char 强制转换为 int
        int asciiValue = (int) ch;
        System.out.println("字符: " + ch);
        System.out.println("ASCII 码: " + asciiValue); // 输出 65
        // 另一个例子
        char ch2 = 'a';
        int asciiValue2 = (int) ch2;
        System.out.println("字符: " + ch2);
        System.out.println("ASCII 码: " + asciiValue2); // 输出 97
        char ch3 = '0';
        int asciiValue3 = (int) ch3;
        System.out.println("字符: " + ch3);
        System.out.println("ASCII 码: " + asciiValue3); // 输出 48
    }
}

说明:

  • 这种方法利用了 Java 的类型转换机制。char 在底层存储的就是一个整数,所以直接转换就能得到它的码点值。
  • 这种方法对于所有 char 字符都有效,不仅仅是 ASCII 字符。'中' 的码点是 20013。

使用 Character 类的 getNumericValue() 方法

Character 类提供了一个 getNumericValue(char ch) 方法,但它通常用于获取字符表示的数字值,而不是其码点。'5'getNumericValue 返回 5,而不是 53,所以这个方法不适用于获取 ASCII 码

java 获取字符的ascii-图2
(图片来源网络,侵删)
// 错误示例:不要用这个方法获取 ASCII 码
char ch = '5';
int wrongValue = Character.getNumericValue(ch); // 返回 5
int correctValue = (int) ch; // 返回 53
System.out.println(wrongValue);   // 输出 5
System.out.println(correctValue); // 输出 53

请避免使用 Character.getNumericValue() 来获取 ASCII 码。


使用 Character 类的 codePointAt() 方法

Character.codePointAt(char[] a, int index) 方法是用来获取字符数组中某个字符的码点的,虽然对于单个字符也能用,但它比强制类型转换更繁琐,所以不推荐。

public class AsciiExampleWithCodePoint {
    public static void main(String[] args) {
        char ch = 'Z';
        // 将字符放入一个字符数组中
        char[] charArray = {ch};
        // 使用 codePointAt 获取码点
        int asciiValue = Character.codePointAt(charArray, 0);
        System.out.println("字符: " + ch);
        System.out.println("ASCII 码: " + asciiValue); // 输出 90
    }
}

对于单个字符,强制类型转换 (int) ch 是最简洁高效的方式。


完整示例:将字符串转换为 ASCII 码数组

一个常见的实际应用场景是,将一个字符串中的每个字符都转换为其对应的 ASCII 码(或码点)。

java 获取字符的ascii-图3
(图片来源网络,侵删)
public class StringToAscii {
    public static void main(String[] args) {
        String text = "Hello World!";
        System.out.println("字符串: \"" + text + "\"");
        System.out.println("对应的 ASCII 码数组:");
        // 遍历字符串中的每个字符
        for (int i = 0; i < text.length(); i++) {
            char ch = text.charAt(i);
            int asciiCode = (int) ch; // 获取码点
            System.out.println("字符 '" + ch + "' -> " + asciiCode);
        }
    }
}

输出结果:

字符串: "Hello World!"
对应的 ASCII 码数组:
字符 'H' -> 72
字符 'e' -> 101
字符 'l' -> 108
字符 'l' -> 108
字符 'o' -> 111
字符 ' ' -> 32
字符 'W' -> 87
字符 'o' -> 111
字符 'r' -> 114
字符 'l' -> 108
字符 'd' -> 100
字符 '!' -> 33
方法 代码示例 适用场景 备注
强制类型转换 (int) 'A' 首选方法,获取单个字符的码点 简单、高效、推荐。
Character.getNumericValue() Character.getNumericValue('A') 获取字符的数字值(如 '5' -> 5) 不适用于获取 ASCII 码。
Character.codePointAt() Character.codePointAt(new char[]{'A'}, 0) 从字符数组中获取码点 对于单个字符过于繁琐,不推荐。

在 Java 中获取字符的 ASCII 码,请始终使用强制类型转换 (int) ch

分享:
扫描分享到社交APP
上一篇
下一篇