将这个python脚本转换为C#

2024-05-21 06:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将下面的python摘录转换为C

tvip = "192.168.0.3"
myip = "192.168.0.7"
mymac = "00-0c-29-3e-b1-4f"
appstring = "iphone..iapp.samsung"
tvappstring = "iphone.UE55C8000.iapp.samsung"
remotename = "Python Samsung Remote" 

ipencoded = base64.b64encode(myip)
macencoded = base64.b64encode(mymac)
messagepart1 = chr(0x64) + chr(0x00) + chr(len(ipencoded)) \
+ chr(0x00) + ipencoded + chr(len(macencoded)) + chr(0x00) \
+ macencoded + chr(len(base64.b64encode(remotename))) + chr(0x00) \
+ base64.b64encode(remotename)
part1 = chr(0x00) + chr(len(appstring)) + chr(0x00) + appstring \
+ chr(len(messagepart1)) + chr(0x00) + messagepart1

我实际上不知道messagepart1在数据结构方面实际代表了什么。在

以下是我的尝试:

^{pr2}$

我比较的方式是,我把两者都打印到控制台,希望它们在正确的情况下是相同的-显然我做错了什么。在


Tags: leniphonebase64samsungb64encodemyipchriapp
3条回答

所以在考虑了这些注释之后,我现在有了一些工作代码。这是变化

        var builderM1 = new StringBuilder();
        builderM1.Append((char)0x64);
        builderM1.Append((char)0x00);
        builderM1.Append((char)myip_e.Length);
        builderM1.Append((char)0x00);
        builderM1.Append(myip_e);
        builderM1.Append((char)mymac_e.Length);
        builderM1.Append((char)0x00);
        builderM1.Append(mymac_e);
        builderM1.Append((char)remotename.ToBase64().Length);
        builderM1.Append((char)0x00);
        builderM1.Append(remotename.ToBase64());

        var m1 = builderM1.ToString();

        var builderP1 = new StringBuilder();
        builderP1.Append((char)(0x00));
        builderP1.Append((char)appstring.Length);
        builderP1.Append((char)(0x00));
        builderP1.Append(appstring);
        builderP1.Append((char)m1.Length);
        builderP1.Append((char)(0x00));
        builderP1.Append(m1);

        Console.WriteLine(builderP1.ToString());

public static string ToBase64(this string source)
{
    return Convert.ToBase64String(Encoding.ASCII.GetBytes(source));
}

以下是基于@Bakuriu评论的另一种解决方案:

    var m1 = string.Format("\x64\x00{0}\x00{1}{2}\x00{3}{4}\x00{5}", 
                (char)myip_e.Length, myip_e, (char)mymac_e.Length, mymac_e, 
                (char)remotename.ToBase64().Length, remotename.ToBase64());

    var p1 = string.Format("\x00{0}\x00{1}{2}\x00{3}", 
                (char)appstring.Length, appstring, (char)m1.Length, m1);

看看SharpDevelop,它们支持C和IronPython,在这个IDE中有一些不同语言之间的转换器。
http://www.icsharpcode.net/OpenSource/SD/Features.aspx
不确定,它是否完全解决了你的问题,但可能会有所帮助。在

相关问题 更多 >