문자열 배열이 있습니다. 각 배열 요소는 2 개의 문자로 구성된 hexString입니다.문자열 배열을 바이트 배열로 변환
예를 들어 배열 될 수있다 :
String a = {"aa","ff","00",.....}
이 어떻게 자바에서 바이트의 배열로 문자열의 배열을 변환 할 수 있습니다 ?
문자열 배열이 있습니다. 각 배열 요소는 2 개의 문자로 구성된 hexString입니다.문자열 배열을 바이트 배열로 변환
예를 들어 배열 될 수있다 :
String a = {"aa","ff","00",.....}
이 어떻게 자바에서 바이트의 배열로 문자열의 배열을 변환 할 수 있습니다 ?
올바르게 이해했다면 연결된 문자열의 바이트 표현이 필요합니까? 같은 뭔가 :
서명되지 않은 바이트 육각 문자열을 구문 분석하려면public byte[] getBytes(String[] array) {
StringBuilder builder = new StringBuilder();
for(String s: array) {
builder.append(s);
}
return builder.toString().getBytes();
}
다시 파싱 된 바이트가 아닙니다. 'getBytes()'는 개별 문자열을 바이트 표현으로 구문 분석하지 않고 각 문자의 기본 charset 인코딩을 사용합니다. 이 답변을 삭제하고 싶습니다. –
,
byte[] b = new byte[a.length()];
for (int i=0; i<a.length(); i++) {
b[i] = (byte) Short.parseShort(a[i], 16);
}
는 "FF"가 two's compliment에 따라, -1로 해석됩니다 사용합니다.
는 "FF는"당신은 당신은 ByteArrayOutputStream을 살펴해야 반바지
short[] b = new short[a.length()];
for (int i=0; i<a.length(); i++) {
b[i] = Short.parseShort(a[i], 16);
}
그래,이게 내가 말하고있는거야. 1 + –
예, 문자열이 ff 일 때 예외를 제공합니다 스레드 "main"의 예외 java.lang.NumberFormatException : 입력 문자열의 경우 : "ff" – user1077980
@ user1077980 : 오류는 Aaron이 아니라 사용자의 것입니다. 귀하의 오류가 ff를 구문 분석하려고합니다. 바이트의 최대 값은 7f입니다. 대신 int로 구문 분석을 시도하십시오.** 편집 : ** 또는 JB Nizet의 훌륭한 추천서를 사용하십시오! –
를 사용해야합니다 (보유 할 수있는 자바 바이트 이상) 255 구문 분석합니다.
그런 다음 각 문자열을 반복하고 Byte.parseByte() 메서드를 사용할 수 있습니다. write 메서드를 사용하여 ByteArrayOutputStream에 추가 할 수 있습니다.
모든 문자열을 변환 한 후에는 ByteArrayOutputStream의 toByteArray() 메서드를 사용할 수 있습니다.
byte b = (byte) (Integer.parseInt(theHexaString, 16));
Byte.parseByte()
를 사용
ByteArrayOutputStream은 작동하지만 조금 지나치게 잔인합니다. 또한 Byte.parseByte()는 "ff"를 막습니다. –
배열을 통해 루프, 그리고 바이트 각 문자열 변환은 바이트에 서명 구문 분석하고, 부호 비트와 같은 부호 비트를 고려하지 않습니다.
나는 최선의 방법은 문자열 배열과 같은 크기의 바이트 배열을 만들고, for 루프를 사용하고, 루프 호출'myBytes [i] = Byte.parseByte (myStrings [i], 16)'각 문자열 항목을 바이트로 구문 분석합니다 (** 편집 : ** oops, 기수를 잊어 버렸습니다!). –
http://stackoverflow.com/questions/5425830/convert-the-hexadecimal-string-representation-of-some-bytes-into-a-byte-array-in이 링크를 사용하십시오. 거의 동일한 질문입니다. – dantuch
@HovercraftFullOfEels - 답으로 게시 했어야합니다. – ziesemer