C# 这些C和Python代码片段在功能上相同吗?
因此,我有一些Python源代码,我想用C重新创建。这些代码是关于读取和解密二进制文件的。我已经在一个现有文件上测试了这个函数,它运行时没有错误;虽然生成的字符串没有乱码或任何东西,但对我来说似乎没有什么用处。但这超出了这个问题的范围,我只想知道我是否已将函数正确地翻译为C,以便它与Python中的功能相同 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
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一无所知。我尝试过各种在线口译员,但我无法验证他们的输出。此外,我还被我没有预料到的错误消息难住了,我无法用我正在使用的实际文件来测试它们。