如何将此Python代码翻译为C#?

如何将此Python代码翻译为C#?,c#,python,C#,Python,我需要将这段代码反向工程为C#,而且输出必须完全相同。关于ord函数和“strHash%”(1的任何建议可能是这样的: 请注意,我使用的是ulong而不是long,因为我不希望溢出后出现负数(它们会干扰计算)。我不需要执行strHash=strHash%(1可能类似于: 请注意,我使用的是ulong而不是long,因为我不希望溢出后出现负数(它们会干扰计算)。我不需要执行strHash=strHash%(第1步:学习一些C#,第2步:尝试你的新知识,第3步:卡住,第4步:发布一个堆栈溢出。是左移

我需要将这段代码反向工程为C#,而且输出必须完全相同。关于ord函数和“strHash%”(1的任何建议可能是这样的:


请注意,我使用的是
ulong
而不是
long
,因为我不希望溢出后出现负数(它们会干扰计算)。我不需要执行
strHash=strHash%(1可能类似于:


请注意,我使用的是
ulong
而不是
long
,因为我不希望溢出后出现负数(它们会干扰计算)。我不需要执行
strHash=strHash%(第1步:学习一些C#,第2步:尝试你的新知识,第3步:卡住,第4步:发布一个堆栈溢出。是左移位运算符。是模运算符。符号在两种语言中的含义相同。
ord()
将字节值作为整数。
%(1@MartijnPieters考虑到在Python中数字可以有无限位数,在循环中这样做可能是一种加速。在C#@xanatos中可能不需要这样做;但只有当
s
非常大时才需要这样做。步骤1:学习一些C#,2:尝试你的新知识,3:卡住,4:发布堆栈溢出。是左移位运算符。是mo吗dulus运算符。符号在两种语言中的含义相同。
ord()
将字节值作为整数。
%(1@MartijnPieters考虑到在Python中,数字可以有无限位数,在循环中这样做可能是一种加速。在C#@xanatos中可能不需要这样做;但只有当
s
非常大时才需要这样做。对
unchecked
关键字的解释很好。对
unchecked
关键字的解释很好。
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
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);
}