将javascript方法的功能转换为c#
本文关键字:转换 功能 javascript 方法 | 更新日期: 2023-09-27 18:01:36
我有一个javascript函数,我想转换为c#的功能。我不知道如何正确地翻译这句话。
有人能帮忙吗?
function validateSequenceNumber(val, num) {
var seqNumber = ((parseFloat(num) + 0xCED9) * 0x8088405) & 0xFFFF
var checksum = seqNumber.toString(16).toUpperCase()
if (checksum != val.substring(11, 15)) {
return false;
}
return true;
}
parseFloat
变为float.Parse
, seqNumber.toString(16)
变为string.Format("{0:x}", seqNumber).ToUpper();
注意c#中的子字符串参数不是start, end;而是开始,长度。所以要小心。function
显然变成了bool
。我想就这样了
所使用的字符串函数也应该使用不变区域性,因为该函数似乎不用于文本显示。下面是函数的转换方法:
private static bool ValidateSequenceNumber(string val, string num) {
System.Globalization.CultureInfo inv=System.Globalization.CultureInfo.InvariantCulture;
int seqNumber = unchecked((((int)Double.Parse(num,System.Globalization.NumberStyles.Any,inv) + 0xCED9) * 0x8088405) & 0xFFFF);
string checksum = seqNumber.ToString("X",inv).ToUpperInvariant();
if (checksum != val.Substring(11, 4)) {
return false;
}
return true;
}
编辑:添加了Unchecked关键字:这里可能发生的溢出错误似乎不重要。
public bool validateSequenceNumber(string val, int num)
{
float seqNumber = (Int32)((Single.Parse(num) + 0xCED9) * 0x8088405) & 0xFFFF;
string checksum = seqNumber.ToString("X").ToUpper();
return (checksum != val.Substring(11, 4) ? false : true);
}