如何将长字符串转换为更短的字符串

时间:2012-12-05 21:28:27

标签: java

理想情况下,我们需要花费很长时间(Java中的System.currentTimeMillis)加上一个后缀,并将其转换为一组字符+数字,用更短的字符串。我们只想要使用大写字母。是否有一个库已经存在,因为它看起来像是一个非常可重复使用的库,用于生成密钥,用户可以在更短的时间内输入密钥。

我想我总是可以写一个但是很容易就能抓住别人的代码/库。

例如

  • 0 = 0
  • 1 = 1
  • 2 = 2
  • 其余数字
  • 11 = A
  • 12 = B
  • 13 = C

所以我可以拿一个数字来减少数字位数。

感谢, 迪安

2 个答案:

答案 0 :(得分: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引用:

答案 1 :(得分:2)

最简单的可能是将数字转换为base-36:

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

这将使用09的数字和AZ的大写字母。