HOWTO · Java
Java で文字を ASCII 数値に変換する方法
この記事では、Java で文字を ASCII 数値に変換する方法を様々な方法と例を交えて紹介しています。
このページの内容
この記事では、Java で与えられた文字を ASCII 数値に変換するための最も簡単で効果的な方法を、例を挙げながら発見していきます。
Java で文字を ASCII 数値に変換するために文字を整数にキャストする
文字を ASCII の数値に変換する最も簡単な方法の 1つは、文字を int にキャストすることです。ここでは 1 文字の話をしているので、複数の文字を使用することはできません。
下の例を見てください。一重引用符で囲まれた文字 a を使用し、そのデータ型を char としていることに注意してください。
public class Main {
public static void main(String[] args) {
int asciiValue = 'a';
System.out.println("ASCII Numeric Value: " + asciiValue);
}
}
出力:
ASCII Numeric Value: 97
Java で文字から ASCII 値を取得するには getBytes(StandardCharsets.US_ASCII) を使用する
この例では、まず文字を文字列として取得し、その文字列をバイトの配列に変換します。これにより、StandardCharsets.US_ASCII は正しい出力値を確実に取得します。
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
String s = "b";
byte[] bytes = s.getBytes(StandardCharsets.US_ASCII);
System.out.println("ASCII Numeric Value: " + bytes[0]);
}
}
出力:
ASCII Numeric Value: 98
このアプローチの利点は、文字列の中にある複数の文字の ASCII 値を直接取得できることです。
4 文字の文字列 s があるとします。以下のように、これらすべての文字の ASCII 数値を取得することができます。
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
String s = "ball";
byte[] bytes = s.getBytes(StandardCharsets.US_ASCII);
System.out.println("ASCII Numeric Value of b: " + bytes[0]);
System.out.println("ASCII Numeric Value of a: " + bytes[1]);
System.out.println("ASCII Numeric Value of l: " + bytes[2]);
System.out.println("ASCII Numeric Value of l: " + bytes[3]);
}
}
出力:
ASCII Numeric Value: 98
ASCII Numeric Value: 97
ASCII Numeric Value: 108
ASCII Numeric Value: 108
Java 9+ で文字を ASCII 値に変換するには String.chars() を使用する
このメソッドでは、Java 9 で追加された API を利用します。String.chars() を用いて IntStream を取得し、.boxed() を用いて Integer オブジェクトのストリームを取得します。これは数値的に ASCII 値を与えてくれるので、List<Integer> に入れてループさせることができます。
この例では、文字列 building を入力とし、文字列内の各文字の ASCII 値を表示します。
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
String stringValue = "building";
List<Integer> listOfIntegers = stringValue.chars().boxed().collect(Collectors.toList());
for (int i : listOfIntegers) {
System.out.println("ASCII value " + i);
}
}
}
出力:
ASCII value 98
ASCII value 117
ASCII value 105
ASCII value 108
ASCII value 100
ASCII value 105
ASCII value 110
ASCII value 103