在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十进制)。