development

Java String을 byte []로 변환하는 방법?

big-blog 2020. 2. 12. 23:41
반응형

Java String을 byte []로 변환하는 방법?


Java Stringbyte[]( 상자가 아닌) 로 변환하는 방법이 Byte[]있습니까?

이것을 시도하면서 :

System.out.println(response.split("\r\n\r\n")[1]);
System.out.println("******");
System.out.println(response.split("\r\n\r\n")[1].getBytes().toString());

그리고 별도의 출력을 얻고 있습니다. gzip 문자열이므로 첫 번째 출력을 표시 할 수 없습니다.

<A Gzip String>
******
[B@38ee9f13

두 번째는 주소입니다. 내가 잘못하고있는 것이 있습니까? byte[]gzip 압축 풀기 프로그램에 피드하려면 다음과 같은 결과가 필요합니다 .

String decompressGZIP(byte[] gzip) throws IOException {
    java.util.zip.Inflater inf = new java.util.zip.Inflater();
    java.io.ByteArrayInputStream bytein = new java.io.ByteArrayInputStream(gzip);
    java.util.zip.GZIPInputStream gzin = new java.util.zip.GZIPInputStream(bytein);
    java.io.ByteArrayOutputStream byteout = new java.io.ByteArrayOutputStream();
    int res = 0;
    byte buf[] = new byte[1024];
    while (res >= 0) {
        res = gzin.read(buf, 0, buf.length);
        if (res > 0) {
            byteout.write(buf, 0, res);
        }
    }
    byte uncompressed[] = byteout.toByteArray();
    return (uncompressed.toString());
}

방법에 decompressGZIP()필요한 객체 byte[]입니다.

따라서 질문에 대한 기본적인 기술적 답변은 다음과 같습니다.

byte[] b = string.getBytes();
byte[] b = string.getBytes(Charset.forName("UTF-8"));
byte[] b = string.getBytes(StandardCharsets.UTF_8); // Java 7+ only

그러나 당신이 씨름하는 것처럼 보이는 문제는 이것이 잘 표시되지 않는다는 것입니다. 호출 toString()하면 Object.toString()클래스 이름 + 메모리 주소 인 기본값 제공됩니다 . 하여 결과적으로 [B@38ee9f13상기 [B수단 byte[]38ee9f13의해 분리 된 메모리 어드레스이다 @.

표시 목적으로 다음을 사용할 수 있습니다.

Arrays.toString(bytes);

그러나 이것은 쉼표로 구분 된 정수 시퀀스로 표시되며 원하는 정수 일 수도 아닐 수도 있습니다.

String에서 다시 읽을 수있게하려면 byte[]다음을 사용하십시오.

String string = new String(byte[] bytes, Charset charset);

Charset버전이 선호 되는 이유는 StringJava의 모든 객체가 내부적으로 UTF-16으로 저장되기 때문입니다. 로 변환 하면 선택한 문자 세트에 따라 byte[]해당 글리프의 다른 글리프 바이트가 표시 String됩니다.


  String example = "Convert Java String";
  byte[] bytes = example.getBytes();

String.getBytes ()를 사용해보십시오. 문자열 데이터를 나타내는 byte []를 반환합니다. 예:

String data = "sample data";
byte[] byteData = data.getBytes();

간단히:

String abc="abcdefghight";

byte[] b = abc.getBytes();

배열 String.getBytes()을 반환하는 것을 사용할 수 있습니다 byte[].


시도하고 싶을 수도 있습니다 return new String(byteout.toByteArray(Charset.forName("UTF-8")))


java를 String 매개 변수로 변경할 필요는 없습니다. 포인터와 코드가없는 String을 수신하려면 c 코드를 변경해야합니다.

Bool DmgrGetVersion (String szVersion);

Char NewszVersion [200];
Strcpy (NewszVersion, szVersion.t_str ());
.t_str () applies to builder c ++ 2010

나는 파티에 조금 늦었다는 것을 알고 있지만 이것은 매우 깔끔합니다 (우리의 교수가 우리에게주었습니다)

public static byte[] asBytes (String s) {                   
           String tmp;
           byte[] b = new byte[s.length() / 2];
           int i;
           for (i = 0; i < s.length() / 2; i++) {
             tmp = s.substring(i * 2, i * 2 + 2);
             b[i] = (byte)(Integer.parseInt(tmp, 16) & 0xff);
           }
           return b;                                            //return bytes
    }

참고 URL : https://stackoverflow.com/questions/18571223/how-to-convert-java-string-into-byte



반응형