C# 请帮我解释这个函数
我的任务是记录一个没有注释的应用程序。但是,我一直无法理解以下函数C# 请帮我解释这个函数,c#,c#-4.0,documentation,C#,C# 4.0,Documentation,我的任务是记录一个没有注释的应用程序。但是,我一直无法理解以下函数 private uint GetVersionHash(int encver, int realver) { int EncryptedVersionNumber = encver; int VersionNumber = realver; int VersionHash = 0; int DecryptedVersionNumber = 0; string VersionNumberSt
private uint GetVersionHash(int encver, int realver)
{
int EncryptedVersionNumber = encver;
int VersionNumber = realver;
int VersionHash = 0;
int DecryptedVersionNumber = 0;
string VersionNumberStr;
int a = 0, b = 0, c = 0, d = 0, l = 0;
VersionNumberStr = VersionNumber.ToString();
l = VersionNumberStr.Length;
// I am specifically struggling with the purpose and intent of this loop.
for (int i = 0; i < l; i++)
{
VersionHash = (32 * VersionHash) + (int)VersionNumberStr[i] + ;
}
a = (VersionHash >> 24) & 0xFF;
b = (VersionHash >> 16) & 0xFF;
c = (VersionHash >> 8) & 0xFF;
d = VersionHash & 0xFF;
DecryptedVersionNumber = (0xff ^ a ^ b ^ c ^ d);
if (EncryptedVersionNumber == DecryptedVersionNumber)
{
return Convert.ToUInt32(VersionHash);
}
else
{
return 0;
}
}
private uint GetVersionHash(int-encver,int-realver)
{
int EncryptedVersionNumber=encver;
int VersionNumber=realver;
int VersionHash=0;
int DecryptedVersionNumber=0;
字符串VersionNumberStr;
INTA=0,b=0,c=0,d=0,l=0;
VersionNumberStr=VersionNumber.ToString();
l=版本号TR.长度;
//我正在为这个循环的目的和意图而奋斗。
对于(int i=0;i>24)&0xFF;
b=(VersionHash>>16)&0xFF;
c=(VersionHash>>8)&0xFF;
d=VersionHash&0xFF;
DecryptedVersionNumber=(0xff^a^b^c^d);
if(EncryptedVersionNumber==DecryptedVersionNumber)
{
返回Convert.ToUInt32(VersionHash);
}
其他的
{
返回0;
}
}
根据我目前的理解,它正确地改变了5位,增加了一些价值
还有一些进一步的信息:
似乎是一个加密版本,为int(从文件中读取)encver
似乎是我们正在测试的匹配版本。它在另一个函数中循环到此函数,从realver
到short.MinValue
short.MaxValue
这个循环的目的是什么?代码是如何实现这一目的的?循环正在计算表示实际版本号的字符串中字符(数字)的“哈希”。VersionHash的值是一个数字,它取决于字符串中的每个字符、字符串长度及其顺序。循环正在计算字符串中代表实际版本号的字符(数字)的“哈希”。VersionHash的值是一个数字,它取决于字符串中的每个字符、字符串的长度以及它们的顺序。在我看来,for循环似乎只是自定义哈希函数的一部分,与生成方法param int encver的函数相同,由于该方法的本质是测试encver中的哈希是否与realver的重新哈希匹配-可能是为了某种完整性检查。在我看来,for循环只是自定义哈希函数的一部分-与生成方法参数int encver的函数相同,因为该方法的本质是测试encver中的散列是否与realver的重新散列相匹配——可能是为了某种完整性检查。我不太担心这个例程中的逻辑。这是一个典型的自行开发的加密系统,用于返回版本号的“哈希”。我会在一条注释中概括这个例程,指出函数的作用,而不涉及太多细节 for循环通过获取字符串中某个字符的(int)值,然后将其左移4个字节来生成哈希。因此,假设版本号的(int)值为: 1,2,3 for循环将生成以下版本的VersionHash:
000200030004我不会太担心这个例程中的逻辑。这是一个典型的自行开发的加密系统,用于返回版本号的“哈希”。我会在一条注释中概括这个例程,指出函数的作用,而不涉及太多细节 for循环通过获取字符串中某个字符的(int)值,然后将其左移4个字节来生成哈希。因此,假设版本号的(int)值为: 1,2,3 for循环将生成以下版本的VersionHash:
000200030004这似乎是某种许可证制度。你确定你只想添加评论吗?这似乎是某种许可方案。您确定只想添加评论吗?谢谢您的回答。我也想接受你的答案,但网站只允许我选择一个(谢谢你的回答。我也想接受你的回答,但是网站只允许我选择一个。:(谢谢你的回答。我也想接受你的回答,但是网站只允许我选择一个。:(谢谢你的回答。我也想接受你的回答,但是网站只允许我选择一个。:)(