2012-12-05 4 views
0

이상적으로는 긴 (System.currentTimeMillis in java) 및 후위의 긴 문자를 사용하고 훨씬 짧은 문자열의 문자 + 숫자로 변환하는 것이 좋습니다. . 우리는 대문자 만 사용하기를 원합니다. 이 라이브러리는 사용자가 더 짧을수록 쉽게 입력 할 수있는 키를 생성하기위한 매우 재사용 가능한 라이브러리처럼 보입니다.긴 문자열을 더 짧은 문자열로 변환하는 방법

나는 항상 글을 쓸 수 있다고 생각하지만, 다른 누군가의 코드/라이브러리를 쉽게 얻을 수 있으면 좋을 것이다.

  • 0 = 0
  • 1 = 2 개
  • 나머지 숫자
  • 111
  • 2 = A
  • 12 = B
  • 13 = C

그래서 숫자를 가져 와서 숫자의 수를 상당히 줄입니다.

덕분에, 딘

+0

원하는 것을 제공 할 수 있습니까? –

+0

"더하기 후위 길이"??? plz explain –

+1

기본 36의 표현을 원하는 것처럼 보입니다. –

답변

6

간단히이 사용

long l = System.currentTimeMillis(); 
String str = Long.toString(l, 36).toUpperCase(); 

사용, 다시 변환하려면 :

String str = "9XQ693458KF"; 
long = Long.parseLong(str, 36); // No need to use toLowerCase here 

36는 기수를 말한다 (10 자리 + 26 자) .

의 JavaDoc 참조 :

+3

@ 보헤미안 - 그건 [MAX_RADIX] (http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#MAX_RADIX)입니다.). 이 코드는 유선'36' 대신'Character.MAX_RADIX'를 사용하는 것이 더 낫습니다. –

+2

@TedHopp 그러나 36은 OP가 'MAX_RADIX'이든 아니든 OP에 명시된 요구 사항과 정확하게 일치합니다. –

+0

@ted 그래, 그걸 보았습니다 :/ – Bohemian

2

가장 쉬운을 아마도 숫자로 변환되어 기초-36 :

Integer.toString(n, 36).toUpperCase() 
Long.toString(n, 36).toUpperCase() 

0에서 숫자를 사용합니다 9A에서 Z까지의 대문자

+0

'36'대신'Character.MAX_RADIX'를 사용하는 것이 더 좋습니다.같은 가치이지만 코드가 명확 해집니다. –

관련 문제