给出双倍
val double = 1.2345
Run Code Online (Sandbox Code Playgroud)
我怎样才能将其转换为Kotlin ByteArray,和/或Array<Byte>?
在转换1.2345之后,其内容将如下所示
00111111 11110011 11000000 10000011
00010010 01101110 10010111 10001101
Run Code Online (Sandbox Code Playgroud)
在Java中,有一个涉及Double.doubleToLongBits()(java.lang.Double的静态方法)的sollution,但是在Kotlin中,Double指的是Kotlin.Double没有这种(或在这种情况下任何其他有用的)方法.
我不介意Kotlin.Double这个文件中的溶剂是否无法访问.:)
hot*_*key 16
您仍然可以使用Java Double的方法,但您必须使用完全限定名称:
val double = 1.2345
val long = java.lang.Double.doubleToLongBits(double)
Run Code Online (Sandbox Code Playgroud)
然后将其转换为ByteArray中,在Java中工作的任何方式,如
val bytes = ByteBuffer.allocate(java.lang.Long.BYTES).putLong(long).array()
Run Code Online (Sandbox Code Playgroud)
(再次注意完整的限定名称)
然后,您可以为此创建扩展功能:
fun Double.bytes() =
ByteBuffer.allocate(java.lang.Long.BYTES)
.putLong(java.lang.Double.doubleToLongBits(this))
.bytes()
Run Code Online (Sandbox Code Playgroud)
用法:
val bytes = double.bytes()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5546 次 |
| 最近记录: |