例えば。BRYR904000Z5 は、( A = 101、B=102、C=103.... Z=126 まで取得する) ような数値形式に変換する必要があります。
BRYR904000Z5 を 1021181251189040001265
にしたいのですが、数字全体を表示できるかどうかも知りたいです。(パスワードジェネレーターで作業中)
文字を区切るコードを見ましたが、これは私には理解しがたいです。ありがとうございました
例えば。BRYR904000Z5 は、( A = 101、B=102、C=103.... Z=126 まで取得する) ような数値形式に変換する必要があります。
BRYR904000Z5 を 1021181251189040001265
にしたいのですが、数字全体を表示できるかどうかも知りたいです。(パスワードジェネレーターで作業中)
文字を区切るコードを見ましたが、これは私には理解しがたいです。ありがとうございました
アルゴリズムのスケルトンは次のとおりです。
すべて大文字を扱っている場合、ASCII値A
は 65 です。したがって、A
101 にするためには、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桁の数字であれば、元々は. String
String
char
注意:
これを行うには、もっと多くの、潜在的により良い方法があります..
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 を表します。