Java에서 문자열을 16 진수로 변환

Rupam Yadav 2023년10월12일
  1. charInteger.toHexString()배열을 사용하여 문자열을 16 진수로 변환
  2. byte배열 및 문자열 포맷터를 사용하여 문자열을 16 진수로 변환
  3. Apache Commons 코덱을 사용하여 문자열을 16 진수로 변환
Java에서 문자열을 16 진수로 변환

이 기사에서는 예제와 함께 아래에 표시된 네 가지 방법을 사용하여 문자열을 16 진수 값으로 변환하는 방법을 알아 봅니다.

charInteger.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

byte배열 및 문자열 포맷터를 사용하여 문자열을 16 진수로 변환

이 예에서는 먼저getBytes()함수를 사용하여 문자열을getBytesFromString바이트 배열로 변환합니다. getBytes()메소드 내에서 charset을 인수로 전달해야합니다. 바이트 배열을 가져 오면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 Commons Codec 라이브러리를 사용합니다. 프로젝트에 라이브러리를 포함하기 위해 다음과 같은 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 Yadav
Rupam Yadav avatar Rupam Yadav avatar

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 Hex