Преобразование Double в ByteArray или Array <Byte> Kotlin

Учитывая двойной

val double = 1.2345 

Как я могу преобразовать это в Kotlin ByteArray и / или Array<Byte> ?

Чье содержимое будет выглядеть следующим образом после преобразования 1.2345

 00111111 11110011 11000000 10000011 00010010 01101110 10010111 10001101 

В Java есть решение, которое включает Double.doubleToLongBits() (статический метод java.lang.Double), но в Kotlin Double относится к Kotlin.Double , который не имеет такого (или другого полезного в этой ситуации) метод.

Я не возражаю, если разрешение Kotlin.Double недоступно в этом файле. 🙂

Вы все равно можете использовать методы Java Double , хотя вам придется использовать полные имена:

 val double = 1.2345 val long = java.lang.Double.doubleToLongBits(double) 

Затем преобразуйте его в ByteArray любым способом, который работает на Java , например

 val bytes = ByteBuffer.allocate(java.lang.Long.BYTES).putLong(long).array() 

(снова запишите полное квалифицированное имя)


Затем вы можете сделать функцию расширения :

 fun Double.bytes() = ByteArray.allocate(java.lang.Long.BYTES) .put(java.lang.Double.doubleToLongBits(this)) .bytes() 

И использование:

 val bytes = double.bytes() 
Intereting Posts
@Throws не влияет, когда цель является свойством Я хочу определить, является ли класс JVM классом Котлина или нет Котлин заставляет меня рухнуть! Является ли это функцией или классом, когда я читаю код? Почему публичный класс не может распространять частный класс? `NoClassDefFoundError: android.databinding.DataBindingUtil` при запуске androidTest для фрагмента с ожиданием данных Подавить «Использовать синтаксис доступа к свойствам» для метода или класса Наследование метода Init Android: Kotlin: пользовательский webView – не может быть вызван как функция. Функция 'invoke ()' не найдена Конструктор Котлин с суперклассом Kotlin – Как импортировать пакеты узлов? Как определить текстовое представление вне класса активности? Невозможно инициализировать кнопку в диалоговом окне в Котлине Kotlin – Прерывистая ошибка «плохого файла класса» Как создать наблюдаемый список в kotlin Запрос по ключу в Google Firebase