fillColor = (fillColor & (0xFF << 24)) | (colorRGB & 0xFFFFFF);
以上是我的代码,我认为这应该没问题。但Android Studio给我一个警告:
表达式中的数字溢出少...(Ctrl + F1)
此检查检查计算过程中溢出的表达式,即:a = 1.0 / 0.0;
我找不到代码的问题,请帮忙。
答案 0 :(得分:4)
0xFF << 24
等于0xFF000000
&#34;技术上&#34;并不适合作为有符号值的int(例如,更改&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
这&#34; hack&#34;将值设置为long,但随后将其强制转换为int。相同的位最终会出现在值中,但是演员特别告诉编译器您很乐意以这种方式截断值。
(int)((long)0xFF << 24);
因此,为了特别修复您的代码,我将0xFF << 24
扩展为long(注意尾随L),然后将其转换为int。
fillColor = (fillColor & (int)0xFF000000L) | (colorRGB & 0xFFFFFF);