Java String을 byte []로 변환하는 방법?
Java String
를 byte[]
( 상자가 아닌) 로 변환하는 방법이 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
버전이 선호 되는 이유는 String
Java의 모든 객체가 내부적으로 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
'development' 카테고리의 다른 글
파이프로“티”를 사용하는 동안 파일에 stderr를 쓰려면 어떻게해야합니까? (0) | 2020.02.12 |
---|---|
.on ( 'click')과 .click ()의 차이점 (0) | 2020.02.12 |
Java Persistence API에서 FetchType LAZY와 EAGER의 차이점은 무엇입니까? (0) | 2020.02.12 |
소수점 이하 두 자리까지 숫자 표시 (0) | 2020.02.12 |
부분 및 템플릿의 복잡한 중첩 (0) | 2020.02.12 |