Java で文字列を 16 進数に変換する
-
char
とInteger.toHexString()
の配列を使用して文字列を 16 進数に変換する -
バイト
の配列と文字列フォーマッタを使用して文字列を 16 進数に変換する - Apache Commons コーデックを使用して文字列を 16 進数に変換する
この記事では、以下に例を示した 4つの方法を使用して、文字列を 16 進値に変換する方法を学習します。
char
と Integer.toHexString()
の配列を使用して文字列を 16 進数に変換する
最初の手法では、文字列を char
の配列に変換します。まず、16 進値の文字列全体を作成するために文字を追加するために使用する StringBuilder()
のオブジェクトを作成します。文字列を char
配列に変換するには、toCharArray()
コマンドを使用します。その後、拡張ループと、引数として単一の char
を受け入れる Integer.toHexString()
メソッドを使用します。
関数 Integer.toHexString()
は、char
を 16 進数に変換し、stringBuilder.append()
メソッドを使用して文字列を追加し、出力に表示します。
public class StringToHex {
public static void main(String[] args) {
String stringToConvert = "This is a string";
convertStringToHex(stringToConvert);
}
private static void convertStringToHex(String str) {
StringBuilder stringBuilder = new StringBuilder();
char[] charArray = str.toCharArray();
for (char c : charArray) {
String charToHex = Integer.toHexString(c);
stringBuilder.append(charToHex);
}
System.out.println("Converted Hex from String: " + stringBuilder.toString());
}
}
出力:
Converted Hex from String: 54686973206973206120737472696e67
バイト
の配列と文字列フォーマッタを使用して文字列を 16 進数に変換する
この例では、最初に getBytes()
関数を使用して文字列をバイトの配列 getBytesFromString
に変換します。getBytes()
メソッド内の文字セットを引数として渡す必要があります。バイト配列を取得したら、BigInteger
のオブジェクトを作成し、コンストラクターで、int
値 1 とバイト配列を引数として渡します。
String.format()
メソッドを使用して、bigInteger
オブジェクトの値を 16 進文字列にフォーマットします。16 進文字列を取得したら、それを出力します。
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
public class StringToHex {
public static void main(String[] args) {
String stringToConvert = "We have to convert this string to hex";
convertStringToHex(stringToConvert);
}
private static void convertStringToHex(String str) {
byte[] getBytesFromString = str.getBytes(StandardCharsets.UTF_8);
BigInteger bigInteger = new BigInteger(1, getBytesFromString);
String convertedResult = String.format("%x", bigInteger);
System.out.println("Converted Hex from String: " + convertedResult);
}
}
出力:
Converted Hex from String: 5765206861766520746f20636f6e76657274207468697320737472696e6720746f20686578
Apache Commons コーデックを使用して文字列を 16 進数に変換する
文字列を 16 進 Java に変換する最後の方法では、Apache CommonsCodec ライブラリを使用します。プロジェクトにライブラリを含めるために、次の Maven 依存関係を使用します。
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
最後の例のように、このプログラムで変換する文字列から byte
の配列を取得します。次に、Apache Commons-Codec ライブラリの Hex
クラスを使用し、その静的メソッド encodeHexString()
を呼び出して、引数として byteArray
を渡します。次に、16 進数に変換される文字列を取得します。
encodeHexString()
の代わりに関数 encodeHex()
を使用できますが、文字列に変換する必要のある char
配列が返されます。ただし、結果は同じになります。
import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.binary.Hex;
public class StringToHex {
public static void main(String[] args) {
String stringToConvert = "We have to convert this string to hex";
convertStringToHex(stringToConvert);
}
private static void convertStringToHex(String str) {
byte[] byteArray = str.getBytes(StandardCharsets.UTF_8);
String convertedResult = Hex.encodeHexString(byteArray);
System.out.println("Converted Hex from String: " + convertedResult);
}
}
出力:
Converted Hex from String: 5765206861766520746f20636f6e76657274207468697320737472696e6720746f20686578
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn関連記事 - Java String
- Java で 16 進文字列のバイト配列を変換する方法
- Java で文字列から部分文字列を削除する方法
- Java で文字列から文字列配列への変換を実行する方法
- Java 文字列をバイトに変換する方法
- Java でランダムな文字列を生成する
- Java のスワップメソッド