我有String name = "admin";
然后我做String charValue = name.substring(0,1); //charValue="a"
我想将其转换charValue
为它的 ASCII 值(97),我该如何在 java 中做到这一点?
很简单。只需将您的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.
只是一种不同的方法
String s = "admin";
byte[] bytes = s.getBytes("US-ASCII");
bytes[0]
将表示 a.. 的 ascii,因此表示整个数组中的其他字符。
而不是这个:
String char = name.substring(0,1); //char="a"
您应该使用该charAt()
方法。
char c = name.charAt(0); // c='a'
int ascii = (int)c;
声称显示如何执行此操作的几个答案都是错误的,因为 Java 字符不是 ASCII 字符。Java 使用 Unicode 字符的多字节编码。Unicode 字符集是 ASCII 的超集。因此,Java 字符串中可能存在不属于 ASCII 的字符。此类字符没有 ASCII 数值,因此询问如何获取 Java 字符的 ASCII 数值是无解的。
但是你为什么要这样做呢?你打算用价值做什么?
如果您想要数值以便可以将 Java 字符串转换为 ASCII 字符串,那么真正的问题是“如何将 Java 字符串编码为 ASCII”。为此,请使用 object StandardCharsets.US_ASCII
。
如果您想将整个字符串转换为连接的 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 作为输出。
归功于此。
我只是复制到这里,方便其他人使用。
将 char 转换为 int。
String name = "admin";
int ascii = name.toCharArray()[0];
还 :
int ascii = name.charAt(0);
只需将char转换为int。
char character = 'a';
int number = (int) character;
的值为number
97。
我知道这已经以多种形式得到了回答,但这里是我的一些代码,可以查看所有字符。
这是代码,从类开始
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
}
}
}
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]);
}
}
}
很简单,得到你想要的字符,然后转换成int。
String name = "admin";
int ascii = name.charAt(0);
一个简单的方法是:
int character = 'a';
如果你打印“字符”,你会得到 97。
正如@Raedwald 指出的那样,Java 的 Unicode 并不适合所有字符来获取 ASCII 值。正确的方法(Java 1.7+)如下:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
使用 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]
或者,您可以将 Stream API 用于 1 个字符或从 Java 1.8 开始的字符串:
public class ASCIIConversion {
public static void main(String[] args) {
String text = "adskjfhqewrilfgherqifvehwqfjklsdbnf";
text.chars()
.forEach(System.out::println);
}
}
一种不使用额外 int 变量的解决方案:
String name = "admin";
System.out.println((int)name.charAt(0));
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);
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
}
为此,我们可以立即使用 String 类
input.codePointAt(index);
我想再提出一个建议,将整个字符串转换为相应的 ascii 代码,例如使用 java 8,“abcde”到“979899100101”。
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
您可以使用此代码检查 ASCII 码。
String name = "admin";
char a1 = a.charAt(0);
int a2 = a1;
System.out.println("The number is : "+a2); // the value is 97
如果我错了,请道歉。
我正在尝试同样的事情,但最好和最简单的解决方案是使用 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
如果您想要字符串中所有字符的 ASCII 值。你可以使用这个:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
如果您想要字符串中单个字符的 ASCII,您可以选择:
(int)a.charAt(index);
简单的方法是:
将整个字符串转换为 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);