如何将5个字母的字符串表示为数字?

时间:2016-07-06 12:07:07

标签: java

我想创建5个字母代码的数字表示。代码可能包含1-5个字母或数字。

数字当然必须唯一。这些数字可以转换回ascii并非绝对必要。

因此我需要从function dosomething(e){ e.preventDefault(); document.getElementById("number2").value=document.getElementById("number1").value }<form> <input type="number" id="number1"> <input type="number" id="number2"> <button onclick="dosomething(event)">Click Me</button> </form> <script> </script>

的数字

结果数字大小应尽可能小。

我从以下开始,但它不是我想要的:

0

4 个答案:

答案 0 :(得分:9)

首先列举您号码的所有可能“数字”:

  • 十位小数09
  • 二十六个字母AZ

五个位置有36个可能的“数字”,因此最大数量为36 5 = 60,466,176。此数字适合int

您可以通过调用Integer.parseInt并传递36的基数

来设置此数字
System.out.println(Integer.parseInt("ABZXY", 36)); // 17355958

Demo.

答案 1 :(得分:2)

请注意,A134Z已经是一个数字;它仅以Base-36表示打印!

虽然只是一个句子,上面的内容应该为您提供所有您需要知道的内容,将0-9和A-Z的任何5个字符的字符串翻译成一个数字(并返回)。

答案 2 :(得分:2)

最简单的解决方案 - 如果字母不区分大小写,则使用36的基数 - 全字母加10位数。这样你就可以免费获得这两个函数 - 从字符串转换为long,从long转换为字符串,如下所示:

long numericCode = Long.parseLong("zzzzz", 36); // gives 60466175
String stringCode = Long.toString(numericCode, 36); // gives "zzzzz"

答案 3 :(得分:1)

您可以将字符串视为base36中的数字(其中A = 10,B = 11 ... Z = 35)。这样,您将使用0到36 ^ 5-1之间的数字,每个数字只使用一次。