将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()