繁体   English   中英

无法将C ++方法转换为C#

[英]Trouble converting C++ method to C#

我正在尝试转换使用本地加密形式的C ++方法。 但是我不明白Buffer[x]Input[x]在做什么? 作为C#开发人员(当时是初学者),看起来它们应该是数组,但并未这样声明。 谁能解释一下?

输入字符串“ {x;ƒ〜sq {j | tLtuq”“转换为” MY SOFTWARE INC“

AnsiString __fastcall TMyMain::Decode(AnsiString Input)
{
  int error[] = { 2, 9, 5, 4, 1, 6, 7, 12, 19, 3, 1, 0, 21, 17 };
  int x;
  AnsiString Buffer = Input;

  if (encoded!=0)
  {
    int count = 0;

    for(x=Input.Length();x>=1;x--)
    {
      Buffer[x] = Input[x]-48+error[count];
      count++;
      if (count>=14)
        count=0;
    }
  }

  return Buffer;
}

这就是我的翻译方式。 注意,我不知道encoded来源,所以我省略了。 诀窍是为缓冲区使用StringBuilder ,以便您可以更改字符,另一个选项是char数组。

public static string Decode(string input)
{
    int[] error = { 2, 9, 5, 4, 1, 6, 7, 12, 19, 3, 1, 0, 21, 17 };
    StringBuilder buffer = new StringBuilder(input);

    int count = 0;
    for (int x = input.Length - 1; x >= 0; x--) {
        buffer[x] = (char)(input[x] - 48 + error[count]);
        count++;
        if (count >= 14)
            count = 0;
    }

    return buffer.ToString();
}

但是,这会为输入“ {x;ƒ〜sq {j | tLtuq””输出“ MY TOFTWARE INC”,因此我不确定是字符串还是代码引起问题。

我已经提出了这个建议,但是它并没有完全返回预期的结果。 您确定输入字符串吗?

输入和输出是字符串。

var encoded = true;
var input = "{x;ƒ~sq{j|tLtuq";
var output = Decode(input);
Console.WriteLine($"input \"{input}\", output \"{output}\"");

private static string Decode(string input)
{
    int[] error = { 2, 9, 5, 4, 1, 6, 7, 12, 19, 3, 1, 0, 21, 17 };
    var buffer = new char[input.Length];

    if (encoded)
    {
        int count = 0;

        for(var x=input.Length-1;x>=0;x--)
        {
            buffer[x] = (char) ((Convert.ToInt16(input[x])-48 + error[count]) & 0xFF);
            count++;
            if (count>=error.Length)
                count=0;
        }
        return new string(buffer)
    }
    return input;
}

调用此命令会将以下内容写入控制台:

输入“ {x;ƒ〜sq {j | tLtuq””,输出“ MY bOFTWARE INC”

我不知道这是否有帮助,但是经过一些反向工程后,您可以使用以下错误数组(使用StringBuilder实现)来显示适当的信息。

int[] error = { 2, 9, 5, 4, 1, 6, 7, 12, 19, 3, 1, -6, 21, 17 };//MY SOFTWARE INC

它与c ++和c#中字符的编码方式有关,因此您可以尝试使用System.Text.Encoding

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM