在Kotlin大量转换为Byte
为什么65555
转换为byte
在Kotlin中产生了19
的结果?
这是因为从一个更宽的types到一个更小的types的数值转换。 Double
( IEEE 754双精度数字 )的两个幂的一个整数部分作为
65555 = 2 17 + 2 4 + 2 2 + 2 0 = 65536 + 16 + 2 + 1,它以二进制forms存储(高位到低位):
... 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 4 + 2 2 + 2 0 = 16 + 2 + 1 = 19。
因为当您将65555(或65555.0)转换为二进制表示forms时,它需要多个字节。 所以调用.toByte()
取最低的那个,就是19。
65555 -> Binary == 1 00000000 00010011 ^ ^^^^^^^^ ^^^^^^^^ 1 0 19
双65555.0得到转换为整数65555是0x10013。 转换为字节需要较低的字节,它是0x13(19十进制)。