我需要快速实现C#BitConverter.DoubleToInt64Bits(doubleValue)。
我发现现场实施
https://referencesource.microsoft.com/#mscorlib/system/bitconverter.cs
[SecuritySafeCritical]
public static unsafe long DoubleToInt64Bits(double value) {
/// some comments ....
Contract.Assert(IsLittleEndian, "This method is implemented assuming little endian with an ambiguous spec.");
return *((long *)&value);
}
在c#中,我有方法:
public long EncodeValue(double doubleValue)
{
return BitConverter.DoubleToInt64Bits(doubleValue);
}
但我需要同样的功能在ios的斯威夫特。
像这样的:
func EncodeValue(doubleValue: Double)
{
return SwiftDoubleToInt64Bits(doubleValue)
}
最佳答案
bitPattern
的Double
属性返回具有相同内存表示的(无符号)64位整数:
let doubleValue = 12.34
let encoded = doubleValue.bitPattern // UInt64
反向转换是用
let decoded = Double(bitPattern: encoded)
print(decoded) // 12.34
同样地,您可以在
Float
和UInt32
之间进行转换。对于独立于平台的内存表示(例如“big endian”),请使用
let encodedBE = doubleValue.bitPattern.bigEndian
let decoded = Double(bitPattern: UInt64(bigEndian: encodedBE))
关于swift - Swift BitConverter.DoubleToInt64Bits等效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53740817/