1

以下をVB.NETからC#に適切に変換できないようです--

iKeyChar = Asc(mid(g_Key, i, 1))
iStringChar = Asc(mid(strCryptThis,i,1))

同等の値を出力していないように見える私の変換された C# コードは次のとおりです。

iKeyChar = Convert.ToInt32(g_Key.Substring(i, 1));
iStringChar = Convert.ToInt32(strCryptThis.Substring(i, 1));

どんな助けでも大歓迎です!

4

4 に答える 4

8

これMidは、 が 1 ベースであるのに対し、Substringは 0 ベースであるためです。このようにしてみてください:

iKeyChar = (int)Convert.ToChar(g_Key.Substring(i-1, 1));
iStringChar = (int)Convert.ToChar(strCryptThis.Substring(i-1, 1));
于 2012-10-26T21:33:23.477 に答える
1

問題なのは ASCII ビットです。ここを参照してください: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/13fec271-9a97-4b71-ab28-4911ff3ecca0およびここ: C# の VB の Asc() および Chr() 関数と同等のもの?

于 2012-10-26T21:37:16.637 に答える
0

これを試して:

        int iKeyChar = Convert.ToChar(g_key.Substring(i, 1));
        int iStringChar = Convert.ToChar(strCryptThis.Substring(i, 1));
于 2012-10-26T21:36:53.363 に答える
0

文字列内のインデックスで目的の char にアクセスし、次のようにキャストするだけintです。

iKeyChar = (int)g_Key[i - 1];
iStringChar = (int)strCryptThis[i - 1];

文字列文字のインデックスはゼロベースであることに注意してください (System Down が彼の投稿で述べたように)。

于 2012-10-26T21:41:02.260 に答える