如何将ASCII码(0-255)转换为关联字符的字符串?

Bel*_*lgi 125 java ascii

我有一个int int范围0-255,我想创建一个String(长度为1),以便该单个字符的ASCII值是指定的整数.

在Java中有一种简单的方法吗?

例:

65  -> "A"
102 -> "f"
Run Code Online (Sandbox Code Playgroud)

Cha*_*ara 230

Character.toString ((char) i);

  • 请注意,这不适用于“Integer”类型,您将收到“java.lang.Integer 无法转换为 java.lang.Character”错误。首先添加对“int”的强制转换,例如:“Character.toString((char)(int)myInteger);” (2认同)

Ryl*_*nza 55

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

  • 问题不在于打印,而在于转换。 (3认同)
  • REPL提示:如果您碰巧使用JShell(Java 9),则可以省略System.out.只需输入`(char)65`就可以找出它是什么字符. (2认同)

zjs*_*zjs 29

String.valueOf(Character.toChars(int))

假设整数是,如你所说,在0到255之间,你将获得一个返回单个字符的数组,Character.toChars传递给它时将成为单字符字符串String.valueOf.

使用Character.toChars优选的是涉及从铸造方法int,以char(即(char) i),用于有许多原因,包括Character.toChars将引发IllegalArgumentException如果不能适当地验证整数而铸造会吞噬的误差(每基本收缩转换规范),这可能使输出不是你想要的.

  • 你是完全正确的,比如`Character.toString((char)i)`比`String.valueOf(Character.toChars(i))`更快.在我的机器上运行在给定范围内转换1,000,000个随机整数的快速基准测试(100次,为了安全),平均时间为153.07纳秒,而862.39纳秒.但是,在任何有趣的应用程序中,都会有更重要的优化事项.安全,确定性处理的附加价值以及在[0,255]范围之外扩展的便利性应该要求超过轻微的性能影响. (5认同)

小智 8

int number = 65;
char c = (char)number;
Run Code Online (Sandbox Code Playgroud)

这是一个简单的解决方案


Pau*_*ger 7

    new String(new char[] { 65 })
Run Code Online (Sandbox Code Playgroud)

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