首页 > 解决方案 > 帮我修复我的代码无法将其从 java 转换为 c#

问题描述

我有 java 的代码来解密这个
575-371-46b-576-362-276-528-634-731-330-53c-729-436

public static String decrypt(String str) {
    str = str.replace("-", "");
    String result = "";
    for (int i = 0; i < str.length(); i += 3) {
        result = result + ((char) (Integer.parseInt(str.substring(i + 1, i + 3), 16) ^ Integer.parseInt(String.valueOf(str.charAt(i)))));
    }
    return result;
}

我托盘转换为c#

private void button1_Click(object sender, EventArgs e)
{
String str= "575-371-46b-576-362-276-528-634-731-330-53c-729-436";
str = str.Replace("-", "");
String result = "";
for (int i = 0; (i < str.Length); i += 3)
{
result = (result + ((char)((int.Parse(str.Substring((i + 1), (i + 3)), 16) | int.Parse(String.valueOf(str[i]))))));

}
textBox1.Text = result; }

但我没有成功解密我得到很多错误的字符串,但我仍然是 C# 的初学者,我无法修复它

Error   1-'string' does not contain a definition for 'valueOf'  
Error   2-Argument 2: cannot convert from 'int' to 'System.IFormatProvider'
Error   3- The best overloaded method match for 'int.Parse(string, System.IFormatProvider)' has some invalid ar`enter code here`guments 

标签: c#

解决方案


这是您正在寻找的 C#:

result += (char)(int.Parse(str.Substring(i + 1, 2), System.Globalization.NumberStyles.HexNumber) ^ int.Parse(str[i].ToString()));

然而,这有点可怕。

我更喜欢 C# 中的这个:

var characters =
    str
        .Split('-')
        .Select(x =>
            int.Parse(x.Substring(1, 2), System.Globalization.NumberStyles.HexNumber) ^ (x[0] - '0'))
        .Aggregate("", (a, c) => a + (char)c);

甚至:

string characters =
    String
        .Join(
            "",
            str
                .Split('-')
                .Select(x => new
                {
                    head = x.Substring(0, 1),
                    tail = x.Substring(1, 2),
                })
                .Select(x => new
                {
                    head = int.Parse(x.head),
                    tail = int.Parse(x.tail, System.Globalization.NumberStyles.HexNumber),
                })
                .Select(x => x.head ^ x.tail)
                .Select(x => (char)x));

推荐阅读