Swift BitConverter.DoubleToInt64Bits Эквивалент - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужна реализация Swift C # BitConverter.DoubleToInt64Bits (doubleValue).Я считаю, что реализация C # на сайте только

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

но мне нужнота же функциональность в Swift для ios.Примерно так:

func EncodeValue(doubleValue: Double)
{
    return SwiftDoubleToInt64Bits(doubleValue)
}

1 Ответ

0 голосов
/ 12 декабря 2018

Свойство 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...