213

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

我想将其转换charValue为它的 ASCII 值(97),我该如何在 java 中做到这一点?

4

22 回答 22

369

很简单。只需将您的char作为int.

char character = 'a';    
int ascii = (int) character;

在您的情况下,您需要先从字符串中获取特定的字符,然后再进行转换。

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

虽然没有明确要求强制转换,但它提高了可读性。

int ascii = character; // Even this will do the trick.
于 2013-05-09T09:31:08.197 回答
55

只是一种不同的方法

    String s = "admin";
    byte[] bytes = s.getBytes("US-ASCII");

bytes[0]将表示 a.. 的 ascii,因此表示整个数组中的其他字符。

于 2013-05-09T09:37:37.197 回答
23

而不是这个:

String char = name.substring(0,1); //char="a"

您应该使用该charAt()方法。

char c = name.charAt(0); // c='a'
int ascii = (int)c;
于 2013-05-09T09:32:13.797 回答
14

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

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

如果您想要数值以便可以将 Java 字符串转换为 ASCII 字符串,那么真正的问题是“如何将 Java 字符串编码为 ASCII”。为此,请使用 object StandardCharsets.US_ASCII

于 2016-03-22T16:47:44.980 回答
13

如果您想将整个字符串转换为连接的 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);

其中你会得到 979899 作为输出。

归功于

我只是复制到这里,方便其他人使用。

于 2013-05-09T09:37:20.420 回答
7

将 char 转换为 int。

    String name = "admin";
    int ascii = name.toCharArray()[0];

还 :

int ascii = name.charAt(0);
于 2013-05-09T09:33:25.190 回答
5

只需将char转换为int。

char character = 'a';
int number = (int) character;

的值为number97。

于 2013-05-09T09:31:52.037 回答
3

我知道这已经以多种形式得到了回答,但这里是我的一些代码,可以查看所有字符。

这是代码,从类开始

public class CheckChValue {  // Class name
public static void main(String[] args) { // class main

    String name = "admin"; // String to check it's value
    int nameLenght = name.length(); // length of the string used for the loop

    for(int i = 0; i < nameLenght ; i++){   // while counting characters if less than the length add one        
        char character = name.charAt(i); // start on the first character
        int ascii = (int) character; //convert the first character
        System.out.println(character+" = "+ ascii); // print the character and it's value in ascii
    }
}

}

于 2016-01-07T15:43:59.220 回答
3
public class Ascii {
    public static void main(String [] args){
        String a=args[0];
        char [] z=a.toCharArray();
        for(int i=0;i<z.length;i++){ 
            System.out.println((int)z[i]);
        }
    }
}
于 2017-03-09T15:23:10.250 回答
2

很简单,得到你想要的字符,然后转换成int。

String name = "admin";
int ascii = name.charAt(0);
于 2013-05-09T09:35:40.610 回答
2

一个简单的方法是:

    int character = 'a';

如果你打印“字符”,你会得到 97。

于 2018-02-22T03:58:14.597 回答
1

正如@Raedwald 指出的那样,Java 的 Unicode 并不适合所有字符来获取 ASCII 值。正确的方法(Java 1.7+)如下:

byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
于 2017-04-19T11:12:26.193 回答
1

使用 Java 9 => String.chars()

String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));

输出 - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]

于 2018-11-15T17:11:14.230 回答
1

或者,您可以将 Stream API 用于 1 个字符或从 Java 1.8 开始的字符串:

public class ASCIIConversion {
    public static void main(String[] args) {
        String text = "adskjfhqewrilfgherqifvehwqfjklsdbnf";
        text.chars()
                .forEach(System.out::println);
    }
}
于 2018-08-12T07:47:45.973 回答
1

一种不使用额外 int 变量的解决方案:

String name = "admin";
System.out.println((int)name.charAt(0));
于 2020-08-15T10:50:52.393 回答
1
String str = "abc";  // or anything else

// Stores strings of integer representations in sequence
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
    sb.append((int)c);

 // store ascii integer string array in large integer
BigInteger mInt = new BigInteger(sb.toString());
System.out.println(mInt);
于 2015-12-16T11:07:51.280 回答
1
String name = "admin";
char[] ch = name.toString().toCharArray(); //it will read and store each character of String and store into char[].

for(int i=0; i<ch.length; i++)
{
    System.out.println(ch[i]+
                       "-->"+
                       (int)ch[i]); //this will print both character and its value
}
于 2017-01-07T05:14:37.790 回答
0

为此,我们可以立即使用 String 类

    input.codePointAt(index);

我想再提出一个建议,将整个字符串转换为相应的 ascii 代码,例如使用 java 8,“abcde”到“979899100101”。

    String input = "abcde";
    System.out.println(
            input.codePoints()
                    .mapToObj((t) -> "" + t)
                    .collect(joining()));
于 2019-04-27T07:32:23.667 回答
0

您可以使用此代码检查 ASCII 码。

String name = "admin";
char a1 = a.charAt(0);
int a2 = a1;
System.out.println("The number is : "+a2); // the value is 97

如果我错了,请道歉。

于 2016-03-13T11:53:39.723 回答
0

我正在尝试同样的事情,但最好和最简单的解决方案是使用 charAt 并访问我们应该创建一个 [128] 大小的整数数组的索引。

String name = "admin"; 
int ascii = name.charAt(0); 
int[] letters = new int[128]; //this will allocate space with 128byte size.
letters[ascii]++; //increments the value of 97 to 1;
System.out.println("Output:" + ascii); //Outputs 97
System.out.println("Output:" +  letters[ascii]); //Outputs 1 if you debug you'll see 97th index value will be 1.

如果要显示完整字符串的 ascii 值,则需要执行此操作。

String name = "admin";
char[] val = name.toCharArray();
for(char b: val) {
 int c = b;
 System.out.println("Ascii value of " + b + " is: " + c);
}

在这种情况下,您的输出将是: a 的 Ascii 值是:97 d 的 Ascii 值是:100 m 的 Ascii 值是:109 i 的 Ascii 值是:105 n 的 Ascii 值是:110

于 2017-12-30T20:32:19.917 回答
0

如果您想要字符串中所有字符的 ASCII 值。你可以使用这个:

String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
    count+=i;

如果您想要字符串中单个字符的 ASCII,您可以选择:

(int)a.charAt(index);
于 2017-02-11T18:54:04.810 回答
0

简单的方法是:

将整个字符串转换为 ASCII :


public class ConvertToAscii{
    public static void main(String args[]){
      String abc = "admin";
      int []arr = new int[abc.length()];
      System.out.println("THe asscii value of each character is: ");
      for(int i=0;i<arr.length;i++){
          arr[i] = abc.charAt(i); // assign the integer value of character i.e ascii
          System.out.print(" "+arr[i]);
      }
    }
}


输出是:

THe asscii value of each character is: 97 100 109 105 110


在这里,abc.charAt(i)给出字符串数组的单个字符: 当我们将每个字符分配给整数类型时,编译器进行类型转换为,

arr[i] = (int) character // Here, every individual character is coverted in ascii value

但是,对于单个字符:

String name = admin; asciiValue = (int) name.charAt(0);// for character 'a' System.out.println(asciiValue);

于 2017-12-31T15:38:24.890 回答