将javascript方法的功能转换为C#

时间:2011-07-06 23:16:03

标签: c# javascript .net checksum

我有一个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;
   }

3 个答案:

答案 0 :(得分:3)

parseFloat变为float.ParseseqNumber.toString(16)变为string.Format("{0:x}", seqNumber).ToUpper();

注意C#中的子串参数不是start,end;相当开始,长度。所以要小心。 function显然变为bool。我认为就是这样。

答案 1 :(得分:1)

使用的字符串函数也应该使用不变文化,因为该函数似乎不用于文本显示。以下是如何转换函数:

 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;
    }

编辑:添加了未经检查的关键字:此处出现的溢出错误似乎并不重要。

答案 2 :(得分:0)

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);
}
相关问题