如何通过java代码将字母数字字符串转换为long?

时间:2013-07-27 14:58:24

标签: java type-conversion

EG。必须将BRYR904000Z5转换为数字格式 (A = 101,B = 102,C = 103 ....你得到它直到Z = 126)

我想BRYR904000Z5为1021181251189040001265
我还想知道是否可以显示整个号码。 (使用密码生成器)

我看到了一个用来分隔角色的代码,但这对我来说很难理解。谢谢

3 个答案:

答案 0 :(得分:2)

这是算法的骨架:

  • 创建一个新的空StringBuilder
  • 循环遍历字符串的所有字符
  • 在每次迭代时:
    • 如果当前char为> ='A'且< ='Z',则将其转换为其数值,并将此数值附加到StringBuilder
    • else,将当前字符追加到StringBuilder
  • 将StringBuilder转换为String

答案 1 :(得分:1)

如果我们处理所有大写字母,就像我们一样,A的{​​{3}}值为65.因此,为了让A成为101 ,我们要添加36:

/*Expects only capital letters*/
public int charToIntCustomConversion(char c)
{
    return  (int) c + 36;
}

(int) c获取c的ASCII值并返回int + 36。

转换回来:

/*Expects only capital letters*/
public char intToCharCustomConversion(int n)
{
    return  (char) (n - 36);
}

修改
如果有任何混淆,请原谅我,上述方法仅用于从char转换为intint转换为char。您不需要转换数字,因为它们保持不变,即只需将它们添加到String即可。

换句话说,当你遇到一封信时(再次假设所有人都是大写),循环通过String并拨打charToIntCustomConversion,如果遇到一个号码,只需将其添加到转换后的字符串中。 / p>

回到最初的String有点棘手,但这似乎并不是你所要求的,但是,如果你知道一个int对一个被转换的角色有同感,你可以使用intToCharCustomConversion

转换回来:
如果您希望能够轻松确定已转换 String中的数字是否与原始String中的字符或数字相对应,那么最简单的操作可能就是是使用数组。如果转换数组中的元素是单个数字,则表示它原来是一个数字。如果它是一个3位数字,您知道它原来是char

注意:
还有更多,可能更好的方法来做到这一点。

答案 2 :(得分:0)

StringBuilder result = new StringBuilder();
for(int i =0; i < string.length(); ++i) {
     char c = string.charAt(i);
     if (Character.isLetter(c) {
         result.append(c - 0x0041 + 101);
     } else if (Character.isDigit) {
         result.append(c);
     } else throw new RuntimeException("BS");
 }

0x0041代表大写字母A的unicode。