杰瑞科技汇

java 字符串的ascii码

方法 1:使用 char 和强制类型转换

Java 的 char 类型本质上是 16 位的 Unicode 字符,可以直接转换为 ASCII 码(如果字符在 ASCII 范围内)。

java 字符串的ascii码-图1
(图片来源网络,侵删)
public class AsciiExample {
    public static void main(String[] args) {
        String str = "Hello";
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            int ascii = (int) c; // 强制转换为 int
            System.out.println("字符: " + c + " -> ASCII码: " + ascii);
        }
    }
}

输出:

字符: H -> ASCII码: 72
字符: e -> ASCII码: 101
字符: l -> ASCII码: 108
字符: l -> ASCII码: 108
字符: o -> ASCII码: 111

方法 2:使用 String.codePointAt()

如果字符串包含非 ASCII 字符(如中文、emoji),codePointAt() 可以正确返回 Unicode 码点(可能超过 0xFFFF)。

public class UnicodeExample {
    public static void main(String[] args) {
        String str = "A中"; // 'A' 是 ASCII,'中' 是 Unicode
        for (int i = 0; i < str.length(); i++) {
            int codePoint = str.codePointAt(i);
            System.out.println("字符: " + str.charAt(i) + " -> Unicode码点: " + codePoint);
        }
    }
}

输出:

字符: A -> Unicode码点: 65
字符: 中 -> Unicode码点: 20013

方法 3:处理 ASCII 范围外的字符

如果字符超出 ASCII 范围(如中文),直接转换会得到 Unicode 码点,而不是 ASCII(因为 ASCII 仅 0-127),可以通过检查字符是否在 ASCII 范围内:

java 字符串的ascii码-图2
(图片来源网络,侵删)
public class CheckAscii {
    public static void main(String[] args) {
        String str = "Hello世界";
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c <= 127) {
                System.out.println("ASCII字符: " + c + " -> 码点: " + (int) c);
            } else {
                System.out.println("非ASCII字符: " + c + " -> Unicode码点: " + (int) c);
            }
        }
    }
}

输出:

ASCII字符: H -> 码点: 72
ASCII字符: e -> 码点: 101
ASCII字符: l -> 码点: 108
ASCII字符: l -> 码点: 108
ASCII字符: o -> 码点: 111
非ASCII字符: 世 -> Unicode码点: 19990
非ASCII字符: 界 -> Unicode码点: 30028

方法 适用场景 示例
(int) char 仅适用于 ASCII 字符(0-127) (int) 'A' → 65
codePointAt() 适用于所有 Unicode 字符(包括中文、emoji) "中".codePointAt(0) → 20013
检查 char <= 127 判断字符是否为 ASCII if (c <= 127) { ... }

如果需要严格限制为 ASCII,可以过滤掉非 ASCII 字符:

String asciiOnly = str.replaceAll("[^\\x00-\\x7F]", "");
分享:
扫描分享到社交APP
上一篇
下一篇