为什么double
的65555
转换为byte
会在Kotlin中产生19
的结果?在Kotlin中大数转换为Byte
3
A
回答
1
Double 65555.0被转换为整数65555,即0x10013。转换为字节需要较低的字节,它是0x13(十进制19)。
3
因为当您将65555(或65555.0)转换为二进制表示时,它需要多个字节。因此调用.toByte()
取最低的一个,其是19.
65555 -> Binary == 1 00000000 00010011
^^^^^^^^^ ^^^^^^^^
1 0 19
9
这是因为从较宽类型的类型更小的尺寸的数值的转换。所述Double
(IEEE 754 double precision number)具有其组成部分分解到两个权力
65555 = 2 + 2 + 2 + 2 = 65536 + 16 + 2 + 1,将其存储以二进制形式为(较高位至较低):
... 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1
当这个数被转换为Byte
,只有它的最低8位被保留:
... _ _ _ _ _ _ _ _ _ _ 0 0 0 1 0 0 1 1
而导致成2 + 2 + 2 = 16 + 2 + 1 = 19。
相关问题
- 1. 在java中将byte []转换为long []
- 2. 在Android中将int转换为byte []
- 3. 在.NET中将int转换为byte [4]
- 4. 使用Tritonus AudioSystem:将PCM byte []数组转换为mp3 byte []数组
- 5. byte []转换为灰度BitmapImage
- 6. 从`const char *'转换为`byte'
- 7. 将byte []转换为UInt16。
- 8. C# - 将uint转换为byte []
- 9. 从floatbuffer转换为byte []
- 10. 将SDP数据从byte []转换为Object?
- 11. 无法将CString转换为BYTE数组
- 12. 将byte []数组转换为DataTable
- 13. 如何将int转换为Byte数组?
- 14. 将ArrayMap转换为ArrayList - Kotlin
- 15. 将int []转换为C#中的byte []
- 16. createFromPdu((byte [])smsobject [i])无法转换为BroadCastReceiver中的byte []
- 17. 在Java中,如何将InputStream转换为字节数组(byte [])?
- 18. 将ByteArrayOutputStream转换为Kotlin中的json
- 19. 在Java中,如何正确地将byte []转换为字符串为byte []?
- 20. 在UWP中将BitmapImage转换为byte [],然后在sqlite中插入
- 21. 将java.net.Socket.getInputStream()转换为显示大延迟的byte []
- 22. 如何将此c#byte []转换为java byte [],然后将此数组转换为位图?
- 23. 图片为byte [],转换和ConvertBack
- 24. 如何将图像(BYTE *)转换为Base64
- 25. 如何将HashSet转换为byte []?
- 26. 如何将int转换为byte []?
- 27. 如何将byte [100]转换为guid
- 28. 如何将byte []转换为InputStream?
- 29. 如何将int []转换为byte []
- 30. 将float []转换为byte []再次浮动[]