Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 将Double转换为ByteArray或Array<;字节>;科特林_Kotlin - Fatal编程技术网

Kotlin 将Double转换为ByteArray或Array<;字节>;科特林

Kotlin 将Double转换为ByteArray或Array<;字节>;科特林,kotlin,Kotlin,加倍 val double = 1.2345 如何将其转换为KotlinByteArray,和/或数组 转换1.2345后,其内容将如下所示 00111111 11110011 11000000 10000011 00010010 01101110 10010111 10001101 在Java中,有一个解决方案涉及到Double.doubleToLongBits()(Java.lang.Double的一个静态方法),但在Kotlin中,Double指的是Kotlin.Double,它没有这

加倍

val double = 1.2345
如何将其转换为Kotlin
ByteArray
,和/或
数组

转换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

(请再次注意完整的限定名)


然后,您可以对此进行以下操作:

fun Double.bytes() = 
    ByteBuffer.allocate(java.lang.Long.BYTES)
        .putLong(java.lang.Double.doubleToLongBits(this))
        .bytes()
以及用法:

val bytes = double.bytes()

自从你的答案出来后,似乎添加了一些方便的方法,你可以用

val double = 1.2345
ByteBuffer.allocate(java.lang.Double.BYTES)
     .putDouble(double).array()

还考虑使用<代码>导入java.郎。双作为jBudi<代码>将<代码> java .郎。双<代码> > <代码> JDouble <代码>
val double = 1.2345
ByteBuffer.allocate(java.lang.Double.BYTES)
     .putDouble(double).array()