java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java字符串转十进制ASCII码

Java实现字符串转换为十进制ASCII码的实战指南

作者:加号3

将Java字符串转换为十进制ASCII码是文本处理、协议编码、数据序列化和底层通信中的常见需求,下面我们就来看看具体的实现方法,希望对大家有所帮助

将Java字符串转换为十进制ASCII码是文本处理、协议编码、数据序列化和底层通信中的常见需求。这一过程涉及字符编码、数值转换和格式化输出等多个技术层面。

一、核心认知:字符串与ASCII的本质关系

Java字符串的双层结构

层次类型说明
逻辑层String(Unicode字符序列)人类可读的文本
物理层byte[](UTF-16或指定编码)JVM内部存储或网络传输字节

关键洞察:Java的char本质上是UTF-16编码单元(0-65535),而ASCII仅是其子集(0-127)。转换时需明确处理范围溢出。

ASCII码范围界定

类型十进制范围说明
标准ASCII0-1277位编码,全球通用
扩展ASCII128-2558位,平台相关(ISO-8859-1等)
非ASCII(Unicode)256-65535中文、 emoji 等,超出传统ASCII

转换策略选择

二、转换场景分类

场景A:单字符转十进制ASCII

输入字符内部编码十进制输出说明
'A'U+004165大写字母A
'a'U+006197小写字母a
'0'U+003048数字字符0
'\n'U+000A10换行控制符(LF)
'\r'U+000D13回车控制符(CR)
' 'U+002032空格(Space)
'中'U+4E2D20013中文字符(超ASCII)

场景B:字符串批量转换

模式输入十进制输出示例适用场景
紧凑连续"ABC""656667"紧凑存储、无分隔
空格分隔"ABC""65 66 67"可读调试、日志输出
逗号分隔"ABC""65,66,67"CSV格式、数据交换
数组格式"ABC""[65, 66, 67]"编程语言风格
定宽格式"ABC""065 066 067"对齐显示、固定宽度
混合标注"A\n""65(10)"控制字符特殊标记

场景C:特殊处理需求

需求处理方式示例
非ASCII过滤替换为占位符或跳过"A中B""65 66"
非ASCII保留输出完整Unicode码点"A中B""65 20013 66"
控制字符转义输出名称而非数值"\n""LF""10(LF)"
字节序标记添加BOM标识"\uFEFFABC"65279 65 66 67

三、代码实现

/**
     * 字符串转十进制ASCII码
     *
     * @param str
     * @return {@link List}<{@link Byte}>
     */
    public List<Byte> strToAscii(String str) {
        List<Byte> valueByte = new ArrayList<>();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            // 第二个参数16表示10进制
            Integer value = Integer.parseInt(Integer.toString(c, 10));
            valueByte.add(ByteUtil.intToByte(value));
        }
        return valueByte;
    }

四、特殊字符处理策略

控制字符可视化

字符十进制标准名替代输出
NUL0Null"0(NUL)""NUL"
SOH1Start of Heading"1(SOH)"
STX2Start of Text"2(STX)"
ETX3End of Text"3(ETX)"
EOT4End of Transmission"4(EOT)"
ENQ5Enquiry"5(ENQ)"
ACK6Acknowledge"6(ACK)"
BEL7Bell"7(BEL)""\a"
BS8Backspace"8(BS)""\b"
HT9Horizontal Tab"9(TAB)""\t"
LF10Line Feed"10(LF)""\n"
VT11Vertical Tab"11(VT)"
FF12Form Feed"12(FF)""\f"
CR13Carriage Return"13(CR)""\r"
ESC27Escape"27(ESC)""\e"
SP32Space"32""SPACE"
DEL127Delete"127(DEL)"

实现策略:转换前查表映射,或输出后附加注释。

非ASCII字符处理

策略处理方式输出示例(输入"中")
直接输出输出完整Unicode码点"20013"
过滤剔除跳过非ASCII字符无输出
替换标记替换为占位符"[NON-ASCII:20013]"
异常抛出IllegalArgumentException中断处理
编码分解UTF-8字节序列"228 184 173"(3字节)

五、性能优化策略

技术效果适用场景
StringBuilder预分配避免扩容,减少GC通用批量
char[]直接填充无方法调用开销极致性能
Arrays.parallelPrefix并行累积超大规模数组
IntStream并行多核利用Java 8+大数据

六、知识扩展

以下是将字符串转换为十进制 ASCII 码的 Java 实现。

代码示例

public class StringToAscii {
    /**
     * 将字符串转换为十进制 ASCII 码数组(每个字符对应一个 int 值)
     * @param str 输入字符串
     * @return 十进制 ASCII 码数组
     */
    public static int[] toAsciiArray(String str) {
        if (str == null) {
            return new int[0];
        }
        int[] result = new int[str.length()];
        for (int i = 0; i < str.length(); i++) {
            result[i] = (int) str.charAt(i);  // char 自动转换为 int,得到 Unicode 码点(ASCII 字符与 ASCII 值一致)
        }
        return result;
    }
    /**
     * 打印字符串每个字符的十进制 ASCII 码(空格分隔)
     * @param str 输入字符串
     */
    public static void printAscii(String str) {
        if (str == null || str.isEmpty()) {
            System.out.println("字符串为空");
            return;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            sb.append((int) str.charAt(i));
            if (i != str.length() - 1) {
                sb.append(" ");
            }
        }
        System.out.println(sb.toString());
    }
    public static void main(String[] args) {
        String input = "Hello";
        int[] asciiValues = toAsciiArray(input);
        System.out.print("十进制 ASCII 码: ");
        for (int val : asciiValues) {
            System.out.print(val + " ");
        }
        System.out.println();
        // 直接打印
        System.out.print("另一种输出: ");
        printAscii(input);
    }
}

运行结果

十进制 ASCII 码: 72 101 108 108 111 
另一种输出: 72 101 108 108 111

代码说明

补充:如果希望得到每个字符的 ASCII 码并拼接成字符串(如 "72101108108111")

public static String toAsciiString(String str) {
    StringBuilder sb = new StringBuilder();
    for (char c : str.toCharArray()) {
        sb.append((int) c);
    }
    return sb.toString();
}

七、总结

核心原则

以上就是Java实现字符串转换为十进制ASCII码的实战指南的详细内容,更多关于Java字符串转十进制ASCII码的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文