【问题标题】:Index number for each letter? [duplicate]每个字母的索引号? [复制]
【发布时间】:2014-01-31 12:10:10
【问题描述】:

好的,所以我不知道它的确切名称(这就是标题错误的原因),这也是我不知道在哪里搜索的原因。谁能告诉我它叫什么,以便我搜索它?

基本上它使用什么索引,因为它是与每个字母关联的数字。每个字母都有一个特定的数字,以及所有其他非数字字符。例如(可能是错误的)

A = 92

a = 31

B = 93

b = 32

C = 94

c = 33

诸如此类。或者,谁能告诉我如何通过一个简单的程序获取号码?

【问题讨论】:

  • 这些数字从何而来?它们看起来不像标准的ascii codes...
  • 这很可能是您的字符的 ASCII 编码。它们的价值取决于您用来表示字符的编码。您可以将它们转换为 C++ 中的 int,但请注意,这实际上取决于您使用的字符,以及您将获得的值以及这些值的可靠性。

标签: java


【解决方案1】:

这很简单,只需将您的char 转换为int 也可以查看Character 代码:

    System.out.println('A');          // A
    System.out.println((int) 'A');    // 65

Java 中的字符用UTF-16 编码

char 数据类型(以及因此 Character 对象封装的值)基于原始 Unicode 规范,该规范将字符定义为固定宽度的 16 位实体。此后,Unicode 标准已更改为允许表示需要超过 16 位的字符。合法代码点的范围现在是 U+0000 到 U+10FFFF,称为 Unicode 标量值。

从指定字符串打印字符代码的示例代码

char[] chars = "abcdefghijklmnopqrstuvwxyz01234567890....".toCharArray();

System.out.println("char  unicode   hex      code");
for (char c : chars)
    System.out.println(String.format(
            "'%s' : \\u%04x :  0x%04X : %s", c, (int) c, (int) c, (int) c));

}

结果

char  unicode   hex      code
'a' : \u0061 :  0x0061 : 97
'b' : \u0062 :  0x0062 : 98
'c' : \u0063 :  0x0063 : 99
'd' : \u0064 :  0x0064 : 100
'e' : \u0065 :  0x0065 : 101
'f' : \u0066 :  0x0066 : 102
'g' : \u0067 :  0x0067 : 103
'h' : \u0068 :  0x0068 : 104
'i' : \u0069 :  0x0069 : 105    
...

【讨论】:

    【解决方案2】:

    将字符(通过自动加宽)转换为 int:

    char c = 'A'; // A when printed
    int i = c; // 65 when printed
    

    int 值 65 是十六进制的 41 或八进制的 101。我假设您在问题中犯了一些数字错误,并且您想要这些值之一。

    【讨论】:

    • a char 已经是一个整数了,演员的意义何在?
    • @Paranaix 关键在于它打印的方式。但是,显式转换运算符是多余的。
    • @MarkoTopolnik 公平点,但在这个一般性陈述的问题中(OP 不问任何关于打印的问题),它们都是平等的
    • @Paranaix 是的。自动加宽。
    • @Paranaix OP 肯定想要打印的 ASCII 码。否则你认为他会发现它是什么?
    【解决方案3】:

    我认为您正在寻找的是 ASCII (ask-ee)。所有(英文)字母、数字和一些标点字符都有与之关联的 ASCII 码。您可以使用

    找到ASCII码
    System.out.println((int)'a');
    

    int a = 'a';
    

    【讨论】:

    • 第一行将打印a...
    • @assylias 我为他修好了 :)
    • @MarkoTopolnik 感谢您解决此问题。我想说(int)a,但我有点忘记了......
    【解决方案4】:

    您的数字 对 Java 来说是错误的。您正在寻找ASCII 和/或Unicode; Unicode 是 ASCII 的国际超集。 Java 对其字符使用 Unicode 的 UTF-16 编码。

    要在程序中使用数字,只需将字符转换为整数,反之亦然

    char c='A';
    int i=(int)c; // i will be set to 65
    

    【讨论】:

      【解决方案5】:

      Java 使用 Unicode,即世界上所有字符的编号。 Windows 和 Linux 有一个字符映射实用程序(Windows、附件、系统)-

      通常将 char 解释为 int:

      String s = "Hello, world!";
      for (int i = 0; i < s.length(); ++i) {
          char ch = s.charAt(i);
          System.println("Char " + ch + " has code " + (int)ch);
      }
      s = "ŝi estas ĉarma";
      for (int i = 0; i < s.length(); ) {
          int c = s.codePointAt(i);
          int n = Character.charCount(c);
          System.println("Char " + s.substring(i, i + n) + " has code " + c);
          i += n;
      }
      

      使用 codePoint 更适合亚洲语言。

      【讨论】:

        猜你喜欢
        • 2021-12-17
        • 2020-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 2014-05-16
        • 2010-11-05
        • 1970-01-01
        相关资源
        最近更新 更多