반응형
나는 16 진수 숫자로 가득 찬 바이트 배열이 있고 인쇄 할 수없는 원소가 많기 때문에 꽤 무의미한 방법을 인쇄합니다.내가 필요한 것은 3a5f771c
의 형태로 정확한 hexcode입니다.
해결 방법
private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = HEX_ARRAY[v >>> 4];
hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
}
return new String(hexChars);
}
내 자신의 작은 벤치 마크 (1000 배, 1 천 5 백만 번)는 다른 대안보다 훨씬 빠르지 만, 긴 배열의 시간이 절반 더 훨씬 빠르게되었다.대답과 비교하여 나는 그것을 가져 갔다, 비트로 작전으로 전환 --- 토론에서 제안 된 바와 같이 --- 긴 배열을위한 시간 중 20 %의 시간을 절감하십시오.(편집 : 내가 대안보다 빠르게 말할 때, 나는 토론에서 제공되는 대체 코드를 의미한다. 성능은 매우 유사한 코드를 사용하는 Commons 코덱과 동일합니다.)
2K20 버전, Java 9 Compact Strings와 관련하여 :
private static final byte[] HEX_ARRAY = "0123456789ABCDEF".getBytes(StandardCharsets.US_ASCII);
public static String bytesToHex(byte[] bytes) {
byte[] hexChars = new byte[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = HEX_ARRAY[v >>> 4];
hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
}
return new String(hexChars, StandardCharsets.UTF_8);
}
참조 페이지 https://stackoverflow.com/questions/9655181
반응형
'자바' 카테고리의 다른 글
Java의 @override 주석을 언제 사용합니까? 왜? (0) | 2021.04.07 |
---|---|
java에서 목록을 배열로 변환합니다 (0) | 2021.04.07 |
Java 선택적 매개 변수 (0) | 2021.04.07 |
Java는 기본 매개 변수 값을 지원합니까? (0) | 2021.04.07 |
ㅅㄷㄴㅅ (0) | 2021.04.07 |
댓글