私は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でこれを行うにはどうすればよいですか?
回答:
とても簡単です。ちょうどあなたをキャスト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.
int ascii = (int)name.charAt(0);
Javaの文字はASCII文字ではないため、これを行う方法を示すとするいくつかの回答はすべて間違っています。Javaは、Unicode文字のマルチバイトエンコーディングを使用します。Unicode文字セットは、ASCIIのスーパーセットです。したがって、ASCIIに属さない文字がJava文字列に含まれる可能性があります。このような文字にはASCII数値がないため、Java文字のASCII数値を取得する方法を尋ねることはできません。
しかし、なぜこれをとにかくしたいのですか?あなたはその価値をどうするつもりですか?
Java文字列をASCII文字列に変換できるように数値が必要な場合、実際の問題は「Java文字列をASCIIとしてエンコードする方法」です。そのためには、オブジェクトを使用します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を取得します。
功績これ。
他の人が使いやすいように、ここにコピーしました。
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]);
}
}
}
これはすでにいくつかの形式で回答されていることはわかっていますが、すべての文字を確認するためのコードを以下に示します。
これがクラスで始まるコードです
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
およびにUnicodeを使用しますchar
。Unicodeのテキスト単位は書記素です。書記素は、基本コードポイントの後に0個以上の結合コードポイントが続きます。Javaでは、コードポイントはUTF-16でエンコードされます。これには、コードポイントに1つまたは2つの16ビットコード単位(char
)が必要になる場合があります。コードポイントを反復するには、この回答を参照してください。たとえば、コードはすでに注目されているU + 1F91E HAND WITH INDEX AND MIDDLE FINGERS CROSSEDコードポイントの準備ができているはずです。
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
}
@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
Javaが持っているものはすべてUTF-16なので、あなたが呼ぶのはまだUTF-16です。
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]
私も同じことを試していましたが、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値は次のとおりです。97dのASCII値は次のとおりです。100mの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)
は、文字列配列の単一の文字を示します。各文字を整数型に割り当てると、コンパイラは次のように型変換を行います。
arr[i] = (int) character // Here, every individual character is coverted in ascii value
ただし、1文字の場合:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
String char
コンパイルされます。あなたは、変数の名前を変更したいかもしれString ch