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
如何将其转换为KotlinByteArray
,和/或数组
转换1.2345后,其内容将如下所示
00111111 11110011 11000000 10000011
00010010 01101110 10010111 10001101
在Java中,有一个解决方案涉及到Double.doubleToLongBits()
(Java.lang.Double的一个静态方法),但在Kotlin中,Double指的是Kotlin.Double
,它没有这样的(或在这种情况下任何其他有用的)方法
我不介意解决方案是否会在该文件中产生
Kotlin.Double
不可访问。:) 您仍然可以使用JavaDouble
的方法,尽管您必须使用全名:
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()