我正在将byte(8位)类型转换为short(16位)类型,在我看来,Java正在转换我原始var的值而不是转换位.
我通过将8位掩码应用于生成的var来解决它short t = data & 0xFF.
Java是否会对var或其位的值进行投射?
byte,short并且int都签名(如长,浮动和双倍).这意味着当你有一个-128到127的字节时,它总是-128到127,简称为int,long,float或double.
如果要将范围-128到127映射到0到255,我建议您使用int更容易在Java中使用的范围.
byte b = -128;
int i = b & 0xFF; // i == 128
Run Code Online (Sandbox Code Playgroud)
由于你有32位或64位寄存器,使用short局部变量并不像你想象的那样帮助你,除非你有很多(我的意思是数百万)BTW字节代码只允许两种大小的局部变量,一个槽(布尔,字节,短,浮点,整数,引用)和两个槽(长和双)注:即使在64位JVM上,引用也使用一个"槽".
唯一的无符号类型是char.
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |