将我编写的ActionScript 3代码转换为c#

本文关键字:代码 转换 ActionScript | 更新日期: 2023-09-27 18:03:39

最近我发现了c#,这才是我真正想要的。在使用c#之前,我是用AS3编码的。我已经用c#重新编码了我所有的旧程序,但我被阻挡了:

public function Envoie_Serveur(param1:String) : void
{
    var _loc_2:* = String(this.CMDTEC % 9000 + 1000).split("");
    this.Serveur.send(this.MDT[_loc_2[0]] + this.MDT[_loc_2[1]] + this.MDT[_loc_2[2]] + this.MDT[_loc_2[3]] + param1);
    var _loc_3:* = this;
    var _loc_4:* = this.CMDTEC + 1;
    _loc_3.CMDTEC = _loc_4;
    return;
}

CMDTEC and MDT are 2 byteArray (byte[] in C# I guess)

这就是我的尝试,但这是不工作;c

byte[] _loc_1 = Encode((Int64.Parse(this.CMDTEC[0].ToString("X", System.Globalization.NumberStyles.HexNumber)) % 9000 + 1000) + "");
var fingerprint = new byte[4];
fingerprint[0] = byte.Parse(this.MDT[_loc_1[0]].ToString("X"), System.Globalization.NumberStyles.HexNumber);
fingerprint[1] = byte.Parse(this.MDT[_loc_1[1]].ToString("X"), System.Globalization.NumberStyles.HexNumber);
fingerprint[2] = byte.Parse(this.MDT[_loc_1[2]].ToString("X"), System.Globalization.NumberStyles.HexNumber);
fingerprint[3] = byte.Parse(this.MDT[_loc_1[3]].ToString("X"), System.Globalization.NumberStyles.HexNumber);
this.CMDTEC++;

例如,这就是CMDTEC和MDT包含的内容:

this.MDT = "1400175151406"; (just for exemple, I get this by socket)
this.CMDTEC = "8306"; (idem as ^)

我怎样才能正确地转换为c#呢?谢谢你的回答。

将我编写的ActionScript 3代码转换为c#

尝试;但是你需要在你的问题中添加更多关于输入和输出、数据类型等的细节。虽然你在处理字符串,但看起来你主要是在处理数值。

为了清楚起见,下面的代码是冗长的,它可以更浓缩。请注意,我还没有真正编译和尝试代码(因为我没有一个server对象,它不会为我编译)。

    byte[] MDT = System.Text.Encoding.ASCII.GetBytes ("1400175151406");
    byte[] CMDTEC = System.Text.Encoding.ASCII.GetBytes ("8306");
    void Envoie_Serveur(string param1)
    {
        // firstly, get CMDTEC as a string, assuming ascii encoded bytes
        string sCMDTEC = System.Text.Encoding.ASCII.GetString(CMDTEC);
        // now convert CMDTEC string to an int
        int iCMDTEC = int.Parse(sCMDTEC);
        // now do modulation etc on the int value
        iCMDTEC = iCMDTEC % 9000 + 1000;
        // now convert modulated int back into a string
        sCMDTEC = iCMDTEC.ToString();
        // now convert modulated string back to byte array, assuming ascii encoded bytes
        byte[] bCMDTEC = System.Text.Encoding.ASCII.GetBytes(sCMDTEC);
        // send the data
        this.Serveur.send(((int)this.MDT[bCMDTEC[0]]) + ((int)this.MDT[bCMDTEC[1]]) + ((int)this.MDT[bCMDTEC[2]]) + ((int)this.MDT[bCMDTEC[3]]) + int.Parse(param1));
        // convert CMDTEC bytes to string again
        sCMDTEC = System.Text.Encoding.ASCII.GetString(CMDTEC);
        // convert CMDTEC string to int again
        iCMDTEC = int.Parse(sCMDTEC);
        // increament CMDTEC
        iCMDTEC += 1;
        // convert back to string
        sCMDTEC = iCMDTEC.ToString();
        // convert back to bytes
        this.CMDTEC = System.Text.Encoding.ASCII.GetBytes(sCMDTEC);
    }