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