2013-04-20 5 views
2

나는이 문제에 관한 stackoverflow에 많은 게시물을 보았다, 나는 부분 솔루션을 찾았지만 지금까지는 아직 나를 위해 작동하는 솔루션을 찾을 수있다. new BigDecimal("3324679375210329505").toString(2); 나를 위해 가장 잘 작동하는 것처럼 보입니다. (: Convert a large 2^63 decimal to binary)하지만 맨 앞뒤에 0이 필요합니다. 어쨌든 큰 (긴 것보다 큰) 헥스를 2 진 (String) 표현으로 변환 할 수 있습니까? 사전에큰 16 진수로

감사합니다.

답변

3

BigInteger 클래스는 임의의 큰 숫자를 처리합니다.

후미가 모두 처리되었습니다. 앞에 0을 처리하기 위해 단순히이 "1"선두 "1"비트를 보장 전면에서, 전원을 껐다가 다시 제거 추가

String bits = new BigInteger("1" + hex, 16).toStting(2).substring(1); 
+0

그것은 않습니다 @jlordo :'의 BigInteger (문자열 STR, INT 기수)' –

+0

는 @ValeriAtamaniouk : 네, 맞아요 , 나는 BgDecimal을보고 있었다. 내 실수. – jlordo

+0

그러나이 솔루션은 0으로 끝나는 부분을 없애고 base64 (내 최종 목표)로 변환하려면 앞뒤에 0이 필요합니다. –

2

을 당신 앞에 0이 필요하십니까? 내가 내장 함수의 모르겠지만, 당신은 쉽게 그것을 직접 구현할 수 있습니다

public static String hex2binary(String hex) { 
    StringBuilder result = new StringBuilder(hex.length() * 4); 
    for (char c : hex.toUpperCase().toCharArray()) { 
     switch (c) { 
     case '0': result.append("0000"); break; 
     case '1': result.append("0001"); break; 
     case '2': result.append("0010"); break; 
     case '3': result.append("0011"); break; 
     case '4': result.append("0100"); break; 
     case '5': result.append("0101"); break; 
     case '6': result.append("0110"); break; 
     case '7': result.append("0111"); break; 
     case '8': result.append("1000"); break; 
     case '9': result.append("1001"); break; 
     case 'A': result.append("1010"); break; 
     case 'B': result.append("1011"); break; 
     case 'C': result.append("1100"); break; 
     case 'D': result.append("1101"); break; 
     case 'E': result.append("1110"); break; 
     case 'F': result.append("1111"); break; 
     default: throw new IllegalArgumentException("Invalid hex: '" + hex + "'"); 
     } 
    } 
    return result.toString(); 
} 
+0

좋은 친구. 나는 스위치의 소문자 문자를 처리하는 것이 더 빠를 것이라고 의심하고,'toUpperCase'를 호출합니다. ... –

+0

@ValeriAtamaniouk : 여분의 케이스를 의미합니까? 내가 입력하기에는 게으르다;) 입력이 얼마나 오래 상관없이, 이것은 응용 프로그램의 병목 현상이되지 않을 것이다 ... – jlordo

+0

위대한 대답은 내가 찾고 있던 매우 단순하지만 매우 유용하다 :) –