将Double转换为ByteArray或者数组<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
,它没有这样的(或者在这种情况下任何其他有用的)方法。
我不介意如果一个Kotlin.Double
产生Kotlin.Double
在这个文件中无法访问。 🙂
您仍然可以使用Java Double
的方法,但您必须使用完全限定的名称:
val double = 1.2345 val long = java.lang.Double.doubleToLongBits(double)
然后将其转换为任何在Java中工作的方式 ,例如ByteArray
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()