C# 这些C和Python代码片段在功能上相同吗?

C# 这些C和Python代码片段在功能上相同吗?,c#,python,code-translation,C#,Python,Code Translation,因此,我有一些Python源代码,我想用C重新创建。这些代码是关于读取和解密二进制文件的。我已经在一个现有文件上测试了这个函数,它运行时没有错误;虽然生成的字符串没有乱码或任何东西,但对我来说似乎没有什么用处。但这超出了这个问题的范围,我只想知道我是否已将函数正确地翻译为C,以便它与Python中的功能相同 Python代码: filename = os.path.basename(path_and_filename) key = 0 for char in filena

因此,我有一些Python源代码,我想用C重新创建。这些代码是关于读取和解密二进制文件的。我已经在一个现有文件上测试了这个函数,它运行时没有错误;虽然生成的字符串没有乱码或任何东西,但对我来说似乎没有什么用处。但这超出了这个问题的范围,我只想知道我是否已将函数正确地翻译为C,以便它与Python中的功能相同

Python代码:

    filename = os.path.basename(path_and_filename)
    key = 0
    for char in filename:
        key = key + ord(char)
    f = open(path_and_filename, 'rb')
    results = ''
    tick = 1
    while True:
        byte = f.read(2)
        if byte:
            if tick:
                key = key + 2
            else:
                key = key - 2
            tick = not tick
            res = struct.unpack('h', byte)[0] ^ key
            results = results + chr(res)
            continue
        break
    f.close()
    return results
路径和文件名是加密文件的绝对路径。以下是我编写的C代码:

        string path = @"C:\Program Files (x86)\Steam\steamapps\common\SolForge\data\released\c28556fb686c8d07066419601a2bdd83\Game_Keywords.dat";
        char[] chars = "c28556fb686c8d07066419601a2bdd83".ToCharArray();
        int key = 0;
        foreach (char c in chars)
        {
            key += c;
        }
        StringBuilder builder = new StringBuilder();


        using (FileStream file = new FileStream(path, FileMode.Open))
        {
            bool tick = true;

            while (true)
            {
                int i = file.ReadByte();
                if (i == -1)
                    break;
                if (tick)
                    key += 2;
                else
                    key -= 2;
                tick = !tick;


                //The next 2 lines are for parsing the short, equivalent(?) to struct.unpack('h', byte)
                i <<= 8;
                i += file.ReadByte();

                i ^= key;
                byte b = (byte)i;
                char c = (char)b;
                builder.Append(c);
            }
        }
        string result = builder.ToString();

不要在意代码的肮脏。这两个代码段会给某个输入提供相同的输出吗?

这可能是关于为什么不测试它?@jornsharpe,因为老实说,我对Python一无所知。我尝试过各种在线口译员,但我无法验证他们的输出。此外,我还被我没有预料到的错误消息难住了,我无法用我正在使用的实际文件来测试它们。