gpt4 book ai didi

c# - 如何将此 Python 代码转换为 C#?

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:57 26 4
gpt4 key购买 nike

我需要将这段代码反向工程到 C# 中,输出完全相同至关重要。关于 ord 函数和“strHash % (1<<64)”部分的任何建议?

def easyHash(s):
"""
MDSD used the following hash algorithm to cal a first part of partition key
"""
strHash = 0
multiplier = 37
for c in s:
strHash = strHash * multiplier + ord(c)
#Only keep the last 64bit, since the mod base is 100
strHash = strHash % (1<<64)
return strHash % 100 #Assume eventVolume is Large

最佳答案

大概是这样的:

请注意,我使用的是 ulong而不是 long ,因为我不希望溢出后出现负数(它们会扰乱计算)。我不需要做 strHash = strHash % (1<<64)因为有 ulong它是隐式的。

public static int EasyHash(string s)
{
ulong strHash = 0;
const int multiplier = 37;

for (int i = 0; i < s.Length; i++)
{
unchecked
{
strHash = (strHash * multiplier) + s[i];
}
}

return (int)(strHash % 100);
}

unchecked关键字通常不是必需的,因为“通常”C# 是在 unchecked 中编译的模式(因此不检查溢出),但代码可以在 checked 中编译模式(有一个选项)。这段代码,如所写,需要 unchecked模式(因为它可能有溢出),所以我用 unchecked 强制它关键字。

python :https://ideone.com/RtNsh7

C#:https://ideone.com/0U2Uyd

关于c# - 如何将此 Python 代码转换为 C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31477509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com