我有String name = "admin";
然后我做String char = name.substring(0,1); //char="a"
我想将转换char
为ASCII值(97),如何在Java中执行此操作?
我有String name = "admin";
然后我做String char = name.substring(0,1); //char="a"
我想将转换char
为ASCII值(97),如何在Java中执行此操作?
Answers:
很简单。只是把你char
当成一个int
。
char character = 'a';
int ascii = (int) character;
在您的情况下,您需要首先从String中获取特定的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.
int ascii = (int)name.charAt(0);
由于Java字符不是ASCII字符,因此旨在显示如何执行此操作的几个答案都是错误的。Java使用Unicode字符的多字节编码。Unicode字符集是ASCII的超集。因此,Java字符串中可能存在不属于ASCII的字符。此类字符没有ASCII数值,因此询问如何获取Java字符的ASCII数值是无法回答的。
但是您为什么仍然要这样做呢?您将如何处理价值?
如果要使用数字值,以便可以将Java String转换为ASCII字符串,则真正的问题是“如何将Java String编码为ASCII”。为此,请使用对象StandardCharsets.US_ASCII
。
将char转换为int。
String name = "admin";
int ascii = name.toCharArray()[0];
另外:
int ascii = name.charAt(0);
很简单,获取所需的字符,然后将其转换为int。
String name = "admin";
int ascii = name.charAt(0);
我知道已经以几种形式回答了这个问题,但这是我的一些代码,以期浏览所有字符。
这是从类开始的代码
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
}
}
}
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);
正如@Raedwald指出的那样,Java的Unicode不能满足所有字符以获取ASCII值的需要。正确的方法(Java 1.7+)如下:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
new String(byte[])
使用另一种字符编码-所谓的系统默认值,它随时间,机器和用户的不同而变化;几乎没有用。您所说asciiString
的仍然是UTF-16,因为这就是Java所拥有的全部。
使用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]
如果要获取字符串中所有字符的ASCII值。您可以使用:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
如果要在字符串中使用单个字符的ASCII,可以使用:
(int)a.charAt(index);
我在尝试同样的事情,但是最好,最简单的解决方案是使用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.
如果要显示完整String的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
简单的方法是:
对于整个字符串转换为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);
为此,我们可以立即使用String classe
input.codePointAt(index);
我想再提出一个建议,将整个字符串转换为相应的ascii代码,例如使用java 8,将“ abcde”转换为“ 979899100101”。
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
String char
编译。您可能想将变量重命名为String ch