在java中将字符转换为ASCII数值

Cel*_*lta 155 java string ascii

我有,String name = "admin";
然后我做String char = name.substring(0,1); //char="a"

我想将char其转换为ASCII值(97),我该如何在java中执行此操作?

Sud*_*hul 259

非常简单.把你char当成一个int.

char character = 'a';    
int ascii = (int) character;
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您需要首先从字符串中获取特定字符然后再将其强制转换.

char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.
Run Code Online (Sandbox Code Playgroud)

虽然不需要强制转换,但它提高了可读性.

int ascii = character; // Even this will do the trick.
Run Code Online (Sandbox Code Playgroud)

  • ASCII字符具有0到127之间的7位代码.因此无需使用int.byte可以完美地存储任何代码. (8认同)
  • @VKSingla - 同意它不是必需的,但它提高了可读性并有助于OP理解. (4认同)

sti*_*ike 48

只是一种不同的方法

    String s = "admin";
    byte[] bytes = s.getBytes("US-ASCII");
Run Code Online (Sandbox Code Playgroud)

bytes[0] 将代表一个..的ascii,从而代表整个数组中的其他字符.


chr*_*her 19

而不是这个:

String char = name.substring(0,1); //char="a"
Run Code Online (Sandbox Code Playgroud)

你应该使用这种charAt()方法.

char c = name.charAt(0); // c='a'
int ascii = (int)c;
Run Code Online (Sandbox Code Playgroud)

  • 只是要记住,“ char”是Java中的保留字。 (3认同)

use*_*904 10

如果您想将整个字符串转换为连续的ASCII值,那么您可以使用此 -

    String str = "abc";  // or anything else

    StringBuilder sb = new StringBuilder();
    for (char c : str.toCharArray())
    sb.append((int)c);

    BigInteger mInt = new BigInteger(sb.toString());
    System.out.println(mInt);
Run Code Online (Sandbox Code Playgroud)

其中你将得到979899作为输出.

相信这一点.

我只是在这里复制它,以便其他人方便.


Rae*_*ald 10

声称显示如何执行此操作的几个答案都是错误的,因为Java字符不是ASCII字符.Java使用Unicode字符的多字节编码.Unicode字符集是一组超级ASCII.因此,Java字符串中可能存在不属于ASCII的字符.这些字符没有ASCII数字值,因此询问如何获取Java字符的ASCII数值是无法回答的.

但是你为什么要这样做呢?你打算怎么做这个价值?

如果你想要数值,所以你可以将Java字符串转换为ASCII字符串,真正的问题是"我如何将Java字符串编码为ASCII".为此,请使用对象StandardCharsets.US_ASCII.

  • 完美答案.类型铸造只是一个不准确的捷径.很高兴你的回答一开始就让人们不要误解概念. (2认同)

Vin*_*gla 6

将 char 转换为 int。

    String name = "admin";
    int ascii = name.toCharArray()[0];
Run Code Online (Sandbox Code Playgroud)

还 :

int ascii = name.charAt(0);
Run Code Online (Sandbox Code Playgroud)


Dan*_*rps 5

只需将 char 转换为 int 即可。

char character = 'a';
int number = (int) character;
Run Code Online (Sandbox Code Playgroud)

的值为number97。