2013-06-24 6 views
1

값이 0xE20x800x93 인 문자열이 있습니다. 이 같은 변환을 시도하고16 진수 문자열을 바이트로 변환

byte[] bs = new byte[]{ 
(byte) 0xE2,(byte) 0x80, (byte) 0x93 
}; 

작동하지만 내가 원하는 것은 명시 적 캐스팅을하지 않고, 난 바이트 배열로 변환해야합니다.

또는 최소한 byte [] 객체가 아닌 byte 객체로 변환하는 방법.

+0

당신은 것 문자열을 구문 분석 한 다음 값을 변환해야합니다. –

+0

비트 7로 설정된 모든 바이트는 명시 적 캐스팅이 필요합니다. –

답변

2

당신은 하나의 (이기는하지만 긴) 라인에서 작업을 수행 할 수 있습니다 이것은 가정

byte[] bytes = Arrays.copyOfRange(new ByteBuffer().putInt(Integer.parseInt(str.replace("0x", ""), 16)).array(), 1, 4); 

당신이 얻을 정확히 3 바이트가 있습니다. 이 가변 길이의 경우는 최종 결과의 크기를 결정하기 위해 입력의 길이를 사용하기 때문에, 다음 코드는, 더 자세한 더 일반적인, 그러나 약간이다 : javax.xml.bind 패키지에서

byte[] bytes = Arrays.copyOfRange(new ByteBuffer().putInt(Integer.parseInt(str.replace("0x", ""), 16)).array(), 4 - str.length()/4, 4); 
1

시도 DatatypeConverter.parseHexBinary(str)

+0

+1 이것은 내가하는 방법입니다. –

관련 문제