我有一些将javascript代码转换为c#的问题,这是按位运算符的问题:JavaScript函数:返回(s-(s | 0x0))* 0x100000000 | 0x0;C#函数;return(long)((s-((long)s))* 0x100000000);如果s = 1.7320508075688772关于Javascript报告-1150833019在C#报告3144134277其他示例可以是Javascript:(1779033703 c#(1779033703 我需要的是将Javascript函数转换为具有相同数字结果的c#。感谢帮助。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 因此,这里发生了一些事情。您的JavaScript类型不匹配。在十六进制中,3144134277是BB67AE85,而-1150833019是FFFFFFFFBB67AE85。因此,我们可以看到JavaScript int32被隐式转换为无符号int64。您不能将位移位0。位移位除以2^n,在这种情况下,n为0。返回的数字与2^0 = 1相同。(long)((ulong)(...)这是双强制转换,被认为是错误的形式。您的数字文字将被强制转换为无符号long,然后再次强制转换为long,这只会浪费循环。您的转换是C样式转换,在C#转换中,转换通常是作为object.ToInt()完成的因此,回顾一下,您的JavaScript中存在一个错误。 (adsbygoogle = window.adsbygoogle || []).push({});