在Kotlin大量转换为Byte

为什么65555转换为byte在Kotlin中产生了19的结果?

3 Solutions collect form web for “在Kotlin大量转换为Byte”

这是因为从一个更宽的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十进制)。

  • Maven with Kotlin 1.2:一个需要的类缺少kotlin / reflect / KDeclarationContainer
  • Retrofit2 + Kotlin中的SimpleXML:MethodException:注释必须标记一个set或get方法
  • Kotlingenerics方法和inheritance
  • 为什么Kotlin在运算符重载之外使用运算符修饰符?
  • 一旦分配了一个非null值,将a从var更改为val的属性?
  • 在kotlin android tailrec函数返回0
  • 界面的function与Property的getter冲突
  • 如何在Kotlin中设置非内联OnClickListener?
  • 用Kotlin和lambda返回接口实现
  • Kotlin的generics:generics映射参数中的types不匹配
  • 访问外部价值内适用
  • Kotlin language will be the best programming language for Android.