【问题标题】:How to convert ASCII code (0-255) to its corresponding character?如何将 ASCII 码(0-255)转换为其对应的字符?
【发布时间】:2011-12-03 09:16:17
【问题描述】:

如何在 Java 中将 ASCII 码(从 [0, 255] 范围内的整数)转换为其对应的 ASCII 字符?

例如:

65  -> "A"
102 -> "f"

【问题讨论】:

  • 这不是上面提到的重复。这不是从整数转换,而是从 char (ascii)
  • 不是“如何从 int 转换为字符串?”的副本...无论如何,FWIW,ASCII 仅 7 位,值为 [0, 127] ; -)
  • @phooji 我认为那篇文章讲的是如何转换 1->"1" etc'
  • @pst - 它是扩展的 ASII ;-)
  • @Belgi - 如果要正确转码值 128-255,则需要明确说明您的编码。术语“扩展 ASCII”没有意义。

标签: java ascii


【解决方案1】:

【讨论】:

  • 对于基于 MIDP 2 / CLDC 1.1 的平台(没有Character.toString(char)stackoverflow.com/a/6210938/923560 提供额外的解决方案。
  • (char) 指定的原因是什么?换句话说,为什么我不能只输入 Character.toString(i); ? (Java 菜鸟)
  • 请注意,这不适用于Integer 类型,您将收到“java.lang.Integer cannot be cast to java.lang.Character”错误。首先向int 添加演员表,例如:Character.toString((char)(int)myInteger);
  • i 值 (0-255) 将来自 ISO-8859-1 字符集。 (提问者拒绝确定需要哪个“扩展 ASCII”[模糊术语],除非接受此答案。)
【解决方案2】:

String.valueOf(Character.toChars(int))

假设整数,如你所说,介于 0 和 255 之间,你会从 Character.toChars 得到一个带有单个字符的数组,当传递给 String.valueOf 时,它将变成一个单字符字符串。

使用Character.toChars 比涉及从int 转换为char(即(char) i)的方法更可取,原因有很多,包括Character.toChars 将抛出IllegalArgumentException验证整数,而强制转换会吞下错误(根据narrowing primitive conversions specification),可能会给出与您预期不同的输出。

【讨论】:

  • 假设整数在 0 到 255 的范围内(正如你所说的那样......并且正如问题所指定的那样),使用 toChars 是不必要且次优的。
  • 您完全正确,Character.toString((char) i) 之类的东西比 String.valueOf(Character.toChars(i)) 快。在我的机器上运行一个在给定范围内转换 1,000,000 个随机整数(100 次,为了安全起见)的快速基准测试,平均时间为 153.07 纳秒,而 862.39 纳秒。然而,在任何有趣的应用程序中,都会有更重要的事情需要优化。如果需要的话,安全、确定性处理和易于扩展到 [0,255] 范围之外的附加价值超过了对性能的轻微影响。
【解决方案3】:
    new String(new char[] { 65 })

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

【讨论】:

    【解决方案4】:

    System.out.println((char)65); 将打印“A”

    【讨论】:

    • REPL 提示:如果您碰巧使用的是 JShell (Java 9),则可以省略 System.out。只需输入(char) 65 即可找出它是什么字符。
    • 问题不是打印而是转换。
    【解决方案5】:

    可以像这样从 a 迭代到 z

    int asciiForLowerA = 97;
    int asciiForLowerZ = 122;
    for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
        search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
    }
    

    【讨论】:

      【解决方案6】:

      更简单的方法:

      类型将整数转换为字符,让int n 为整数, 那么:

      Char c=(char)n;
      System.out.print(c)//char c will store the converted value.
      

      【讨论】:

        【解决方案7】:
        int number = 65;
        char c = (char)number;
        

        这是一个简单的解决方案

        【讨论】:

          【解决方案8】:

          这是一个例子,它表明通过将int转换为char,可以确定对应的字符为ASCII码。

          public class sample6
          {
              public static void main(String... asf)
              {
          
                  for(int i =0; i<256; i++)
                  {
                      System.out.println( i + ". " + (char)i);
                  }
              }
          }
          

          【讨论】:

            【解决方案9】:

            仅接近解决问题的上层答案。这是你的答案:

            Integer.decode(Character.toString(char c));

            【讨论】:

              【解决方案10】:
                  for (int i = 0; i < 256; i++) {
                      System.out.println(i + " -> " + (char) i);
                  }
              
                  char lowercase = 'f';
                  int offset = (int) 'a' - (int) 'A';
                  char uppercase = (char) ((int) lowercase - offset);
                  System.out.println("The uppercase letter is " + uppercase);
              
                  String numberString = JOptionPane.showInputDialog(null,
                          "Enter an ASCII code:",
                          "ASCII conversion", JOptionPane.QUESTION_MESSAGE);
              
                  int code = (int) numberString.charAt(0);
                  System.out.println("The character for ASCII code "
                          + code + " is " + (char) code);
              

              【讨论】:

              • 请解释你的答案
              猜你喜欢
              • 2011-11-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-11-16
              • 2011-09-05
              • 2023-03-30
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多