我想创建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
答案 0 :(得分:9)
首先列举您号码的所有可能“数字”:
0
到9
A
到Z
五个位置有36个可能的“数字”,因此最大数量为36 5 = 60,466,176。此数字适合int
。
您可以通过调用Integer.parseInt
并传递36的基数
System.out.println(Integer.parseInt("ABZXY", 36)); // 17355958
答案 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之间的数字,每个数字只使用一次。