Java:如何将字母数字字符串转换为整数,以及如何将整数转换为相同的字母数字字符串?
我正在尝试将字母数字字符串转换为整数,并从整数生成相同的字母数字字符串 下面是我的代码。他们是否有更好的方法来实现这一目标Java:如何将字母数字字符串转换为整数,以及如何将整数转换为相同的字母数字字符串?,java,Java,我正在尝试将字母数字字符串转换为整数,并从整数生成相同的字母数字字符串 下面是我的代码。他们是否有更好的方法来实现这一目标 Map<Character, String> lettersToNumbers = new HashMap<Character, String>(); lettersToNumbers .put('1', "01"); lettersToNumbers .put('2', "02"); lettersToNumber
Map<Character, String> lettersToNumbers = new HashMap<Character, String>();
lettersToNumbers .put('1', "01");
lettersToNumbers .put('2', "02");
lettersToNumbers .put('3', "03");
lettersToNumbers .put('4', "04");
lettersToNumbers .put('5', "05");
lettersToNumbers .put('6', "06");
lettersToNumbers .put('7', "07");
lettersToNumbers .put('8', "08");
lettersToNumbers .put('9', "09");
lettersToNumbers .put('0', "00");
lettersToNumbers .put('A', "10");
lettersToNumbers .put('B', "11");
lettersToNumbers .put('C', "12");
lettersToNumbers .put('D', "13");
lettersToNumbers .put('E', "14");
lettersToNumbers .put('F', "15");
lettersToNumbers .put('G', "16");
lettersToNumbers .put('H', "17");
lettersToNumbers .put('I', "18");
lettersToNumbers .put('J', "19");
lettersToNumbers .put('K', "20");
lettersToNumbers .put('L', "21");
lettersToNumbers .put('M', "22");
lettersToNumbers .put('N', "23");
lettersToNumbers .put('O', "24");
lettersToNumbers .put('P', "25");
lettersToNumbers .put('Q', "26");
lettersToNumbers .put('R', "27");
lettersToNumbers .put('S', "28");
lettersToNumbers .put('T', "29");
lettersToNumbers .put('U', "30");
lettersToNumbers .put('V', "31");
lettersToNumbers .put('W', "32");
lettersToNumbers .put('X', "33");
lettersToNumbers .put('Y', "34");
lettersToNumbers .put('Z', "35");
StringBuilder sb= new StringBuilder();
String covertToInteger = "FR1234".toUpperCase();
for (Character ch : covertToInteger.toCharArray()){
sb.append(lettersToNumbers.get(ch));
}
System.out.println(sb.toString());
String integertoalphanumeric= sb.toString();
int i=0;
for(;i<abc.length();){
for (Entry<Character, String> entry : lettersToNumbers.entrySet()) {
if (entry.getValue().equals(abc.substring(i, i+2))) {
System.out.print(entry.getKey());
}
}
i=i+2;
}
Map lettersToNumbers=newhashmap();
lettersToNumbers.put('1','01');
lettersToNumbers.put('2','02');
lettersToNumbers.put('3','03');
lettersToNumbers.put('4','04');
lettersToNumbers.put('5','05”);
lettersToNumbers.put('6','06');
lettersToNumbers.put('7','07');
lettersToNumbers.put('8','08”);
lettersToNumbers.put('9','09');
lettersToNumbers.put('0','00');
lettersToNumbers.put('A','10');
lettersToNumbers.put('B','11');
lettersToNumbers.put('C','12”);
lettersToNumbers.put('D','13”);
lettersToNumbers.put('E','14”);
字母编号。put('F','15”);
lettersToNumbers.put('G','16”);
lettersToNumbers.put('H','17”);
lettersToNumbers.put('I','18”);
lettersToNumbers.put('J','19');
lettersToNumbers.put('K','20”);
lettersToNumbers.put('L','21”);
lettersToNumbers.put('M','22”);
lettersToNumbers.put('N','23”);
字母编号。大写('O','24”);
lettersToNumbers.put('P','25”);
lettersToNumbers.put('Q','26');
lettersToNumbers.put('R','27”);
lettersToNumbers.put('S','28');
lettersToNumbers.put('T','29”);
字母编号。put('U','30”);
lettersToNumbers.put('V','31”);
lettersToNumbers.put('W','32”);
lettersToNumbers.put('X','33”);
lettersToNumbers.put('Y','34”);
lettersToNumbers.put('Z','35”);
StringBuilder sb=新的StringBuilder();
字符串covertToInteger=“FR1234”.toUpperCase();
for(字符ch:covertToInteger.toCharArray()){
sb.追加(lettersToNumbers.get(ch));
}
System.out.println(sb.toString());
字符串integertoalphanumeric=sb.toString();
int i=0;
对于(;i假设您谈论的是Integer
类型,那么您所尝试的将不起作用
假设我们将自己限制为6个字符的字母数字字符串,如您的示例所示。共有62个(拉丁)字母数字字符:10位数字、26个大写字母和26个小写字母
不同的6个字符alphanum字符串的总数为626==56800235584。但int
/整数
只能表示232==4294967296个不同的值。这一数量级太小了
因此,从数学上讲,不可能想出一种编码方法,将所有可能的6个字符的alphanum字符串表示为不同的int
值
(如果使用long
而不是int
,则11个字符串太长。)您需要提供更多信息。您的输入是什么?在哪里检查字符串和整数?在3456
和1234
之间的数学关系是什么?预结束和删除FR
应该足够简单。这不是一个可逆函数。您丢失了信息“FR”当您转换为整数时,除非您以某种方式保存它,否则无法反转操作。如果您需要这种控制,我建议您编写一个类来处理这种逻辑并保持其一致性。一个int
值只能存储约40亿个不同的值。但是,您可以按照自己喜欢的方式执行编码您无法更改此设置。问题是,如果没有此信息,您还希望能够编码什么?无法知道最佳解决方案是什么。我已尝试过。1)将字符串编码为字节,然后将字节转换为整数