我需要快速实现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)
}

最佳答案

bitPatternDouble属性返回具有相同内存表示的(无符号)64位整数:

let doubleValue = 12.34
let encoded = doubleValue.bitPattern // UInt64

反向转换是用
let decoded = Double(bitPattern: encoded)
print(decoded) // 12.34

同样地,您可以在FloatUInt32之间进行转换。
对于独立于平台的内存表示(例如“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/

10-12 23:55