2012-12-05 20 views
0

理想情況下,我們要花費很長(在Java System.currentTimeMillis的),加上一個後綴只要好,將其轉換爲在更短的字符串,一組字符+數字。我們只想使用大寫字母。是否有這樣的庫,因爲它看起來像一個非常可重用的庫,用於生成密鑰,用戶可以更輕鬆地鍵入它們,因爲它們更短。如何長轉換爲更短的字符串

我想我隨時可以寫一個,但它會是不錯的輕鬆只是搶別人的代碼/庫。

例如

  • 0 = 0
  • 1 = 1
  • 2 = 2個
  • 其餘數字
  • 11 = A
  • 12 = B
  • 13 = C

這樣我就可以採取一些減少的位數相當顯著。

感謝, 迪安

+0

你能提供你想要的東西的例子嗎? –

+0

「加上後綴長」? PLZ解釋 –

+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 )。代碼最好使用'Character.MAX_RADIX'而不是硬連線'36'。 –

+2

@TedHopp但36正好對應於要求由OP指出,無論它是否是'MAX_RADIX'。 –

+0

@ted耶只是看起來:/ – Bohemian

2

最簡單的也許是將數字轉換立足-36:

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

這將使用數字從09和大寫字母從AZ

+0

更好地使用'Character.MAX_RADIX'而不是'36'。這是相同的價值,但它使代碼更清晰。 –