我有String name = "admin";
然后我做String char = name.substring(0,1); //char="a"
我想将char
转换为其ASCII值(97),我该如何在java中执行此操作?
答案 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