在Kotlin中大量转换为Byte

Alf*_*Moh 3 kotlin

为什么一个double65555转换byte产生的结果19在科特林?

hot*_*key 9

这是因为从较宽类型到较小尺寸类型的数字转换.的Double(IEEE 754双精度数)都有其组成部分分解到的功率的两个为
65555 = 2 17 + 2 4 + 2 2 + 2 0 = 65536 + 16 + 2 + 1,其被存储在二进制形式(较高要降低的位数):

 ?... 0 1  0 0 0 0 0 0 0 0  0 0 0 1 0 0 1 1?
Run Code Online (Sandbox Code Playgroud)

转换为此数字时Byte,仅保留其最低8位:

 ... _ ?_  _ _ _ _ _ _ _ _  0 0 0 1 0 0 1 1?
Run Code Online (Sandbox Code Playgroud)

结果为2 4 + 2 2 + 2 0 = 16 + 2 + 1 = 19.