次の行をilSpyで取得しました
p[var1] = (t[var1] + z.c[var1 % z.c.Length]) % 'Ā';
p、t、c は char 配列 [] です。
私の質問は次のとおりです。どうすれば彼とキャラクターを追加できますか? t[var1]+zc[someNumber] は 2 文字であり、最後に数字「A」を付けて結果をモジュール化します。
次の行をilSpyで取得しました
p[var1] = (t[var1] + z.c[var1 % z.c.Length]) % 'Ā';
p、t、c は char 配列 [] です。
私の質問は次のとおりです。どうすれば彼とキャラクターを追加できますか? t[var1]+zc[someNumber] は 2 文字であり、最後に数字「A」を付けて結果をモジュール化します。
char
int
はとare と同じように整数型なlong
ので、これらを足し合わせてインスタンス%
の値に使用できます。char
int
s と%
それらを追加できるのと同じ方法で。
これは、上記が機能する理由を説明しています。
それが何を意味するかは別の質問であり、それほど明白ではありません。char
範囲からして使われていたのかもしれませんが、一体型として使われています。これは小文字を大文字に変換する関数 (またはその逆) であるとは言えませんが、それ以上のコンテキストがなければ、それを伝えることは不可能です。
使用している逆コンパイラが IL を誤って解釈した (または完全に解釈できなかった) 可能性があり、IL と同等のものを提示している可能性がありますが、それは元のコードと同じではありません。
Odedが指摘したように、ilSpy によって取得された式は構文的に有効ですが、元のコードは異なっていたと思います。
(U+0100, Latin Capital Letter A With Macron)のコードは 256 です。これは、 、、およびが ASCII などのシングルバイト エンコーディングの文字列を表しĀ
ていることを示唆しています。次に、ilSpy から取得したコードは理にかなっています。例 (名前を 、、およびに変更しました):t
c
p
t
c
p
encrypted[index] = (source[index] + z.passPhrase[index % z.passPhrase.Length]) % 256;
ここには、元の文字列にパスフレーズを周期的に追加する単純な暗号化機能があります。
文字を追加する場合、実際には Int operator+ を呼び出しています。これは、追加が char で定義されていないためです。文字も基本的には数値(表示が違うだけ)なので問題ありません。彼はおそらく、結果が 1 バイト文字の範囲になるように、結果を 'Ā' (数値: 256) で修飾します。