我正在用 C# 开发一个可移植类库,我想将 a 位转换double
为long
. 这个问题最直接的解决方案是使用该BitConverter.DoubleToInt64Bits
方法,但不幸的是,该方法在 .NET 类库的 Portable Library 子集中不可用。
作为替代方案,我提出了以下“两次”位转换:
var result = BitConverter.ToInt64(BitConverter.GetBytes(x), 0);
我的测试表明,这个表达式始终产生与DoubleToInt64Bits
. 但是,我的基准测试也表明,这种替代公式比在完整的 .NET Framework 应用程序中实现时慢大约四倍。DoubleToInt64Bits
仅使用便携式库子集,是否可以实现DoubleToInt64Bits
比我上面的公式更快的替换?