-7

例えば。BRYR904000Z5 は、( A = 101、B=102、C=103.... Z=126 まで取得する) ような数値形式に変換する必要があります。

BRYR904000Z5 を 1021181251189040001265
にしたいのですが、数字全体を表示できるかどうかも知りたいです。(パスワードジェネレーターで作業中)

文字を区切るコードを見ましたが、これは私には理解しがたいです。ありがとうございました

4

3 に答える 3

2

アルゴリズムのスケルトンは次のとおりです。

  • 新しい空の StringBuilder を作成する
  • 文字列のすべての文字をループします
  • 各反復で:
    • 現在の文字が >= 'A' かつ <= 'Z' の場合、それを数値に変換し、この数値を StringBuilder に追加します
    • それ以外の場合は、現在の文字を StringBuilder に追加します
  • StringBuilder を String に変換します
于 2013-07-27T15:05:51.853 に答える
1

すべて大文字を扱っている場合、ASCIIAは 65 です。したがって、A101 にするためには、36 を追加する必要があります。

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

(int) cの ASCII 値を取得し、その+ 36cを返します。int

元に戻すには:

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

編集:
混乱が生じた場合はご容赦ください。上記の方法は、charからintおよびintへの変換のみを目的としていcharます。数字は変わらないので変換する必要はありませんString

言い換えれば、あなたが文字に遭遇したときにあなたStringをループして呼び出しcharToIntCustomConversionます(繰り返しますが、すべて大文字であると仮定します).数字に遭遇した場合は、変換された文字列に追加するだけです.

元に戻すのStringは少しトリッキーですが、それはあなたが求めていることではないようですが、int変換された文字に が対応することがわかっている場合は、 を使用できますintToCharCustomConversion

元に戻す:変換された数値が元の文字または数値に対応
するかどうかを簡単に判断できるようにしたい場合は、おそらく配列を使用するのが最も簡単です。変換された配列の要素が単一の数値である場合、元は数値であったことがわかります。3桁の数字であれば、元々は. StringStringchar

注意:
これを行うには、もっと多くの、潜在的により良い方法があります..

于 2013-07-27T15:05:35.350 に答える
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 を表します。

于 2013-07-27T15:06:22.380 に答える