Java で文字を ASCII 数値に変換する方法

  1. Java で文字を ASCII 数値に変換するために文字を整数にキャストする
  2. Java で文字から ASCII 値を取得するには getBytes(StandardCharsets.US_ASCII) を使用します
  3. Java 9+で文字を ASCII 値に変換するには String.chars() を使う

この記事では、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

関連記事 - Java Char

  • Java で char を int に変換する方法
  • comments powered by Disqus