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

时间:2013-05-09 09:30:23

标签: java string ascii

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

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

22 个答案:

答案 0 :(得分:233)

很简单。只需将char投射为int

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

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

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.

答案 1 :(得分:45)

只是一种不同的方法

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

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

答案 2 :(得分:18)

而不是:

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

您应该使用charAt()方法。

char c = name.charAt(0); // c='a'
int ascii = (int)c;

答案 3 :(得分: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);

其中您将获得979899作为输出。

归功于this

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

答案 4 :(得分:10)

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

为什么你想要这样做呢?你打算怎么处理这个价值?

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

答案 5 :(得分:4)

将char转换为int。

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

另外:

int ascii = name.charAt(0);

答案 6 :(得分:2)

将char转换为int。

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

number的值为97。

答案 7 :(得分: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
}

答案 8 :(得分: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);
    }
}

答案 9 :(得分:1)

一个简单的方法是:

List is empty!
List:  3 2 1
Head removed
List:  2 1
List:  2
Last node removed
List is empty!
head: (nil)
List is empty!

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

答案 10 :(得分:1)

正如@Raedwald指出的那样,Java的Unicode并不能满足所有字符的要求,无法获得ASCII值。 (Java 1.7 +)的正确方法如下:

byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)

答案 11 :(得分:1)

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]);
        }
    }
}

答案 12 :(得分:1)

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

以下是以类

开头的代码
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
    }
}

}

答案 13 :(得分: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);

答案 14 :(得分:1)

这很简单,得到你想要的角色,并将其转换为int。

String name = "admin";
int ascii = name.charAt(0);

答案 15 :(得分:0)

如果需要String中所有字符的ASCII值。你可以用这个:

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

如果你想要String中单个字符的ASCII,你可以去:

(int)a.charAt(index);

答案 16 :(得分:0)

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

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

如果我错了,道歉。

答案 17 :(得分: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);
}

在这种情况下,您的输出将是: Ascii的a值是:97 D的Ascii值是:100 m的Ascii值是:109 我的Ascii值是:105 N的Ascii值是:110

答案 18 :(得分: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)给出了String数组的单个字符: 当我们将每个字符分配给整数类型时,编译器会将转换类型改为

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);

答案 19 :(得分:0)

使用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]

答案 20 :(得分:0)

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

    input.codePointAt(index);

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

    String input = "abcde";
    System.out.println(
            input.codePoints()
                    .mapToObj((t) -> "" + t)
                    .collect(joining()));

答案 21 :(得分:0)

不使用额外的int变量的单行解决方案:

# Unit: milliseconds
#                     expr        min         lq       mean     median         uq        max neval
#              darren_base   18.58418   20.88498   35.51341   33.64953   39.31909   80.24725    10
#         darren_dplyr_lag   39.49278   40.27038   47.26449   42.89170   43.20267   76.72435    10
# arg0naut91_dplyr_rollsum  436.22503  482.03199  524.54800  516.81706  534.94317  677.64242    10
#    Grothendieck_rollsumr 3423.92097 3611.01573 3650.16656 3622.50895 3689.26404 4060.98054    10