【问题标题】:How to cast from int to byte, then use a bitshift operator如何从 int 转换为 byte,然后使用位移运算符
【发布时间】:2013-05-22 20:31:49
【问题描述】:

为什么以下不起作用?我将一个 int 转换为一个字节,然后将这些位移动 7。我没有看到任何问题。

但是,我收到错误消息“可能丢失精度...必需:字节;找到:int”

pixels 是字节数组,c 是 Color 对象,iter 是整数。

pixels[iter++] = ((byte) c.getRed()) << 7;
pixels[iter++] = ((byte) c.getGreen()) << 7;
pixels[iter++] = ((byte) c.getBlue()) << 7;

【问题讨论】:

  • 怎么样:(byte)(c.getRed() &lt;&lt; 7);

标签: java casting colors binary bit-shift


【解决方案1】:

在 Java 中,移位运算符返回 int 值,即使要移位的数量是 byte。您需要将演员表包装到 byte 整个表达式周围:

pixels[iter++] = (byte) (c.getRed() << 7);
pixels[iter++] = (byte) (c.getGreen() << 7);
pixels[iter++] = (byte) (c.getBlue() << 7);

【讨论】:

  • 谢谢,我感觉这与运营商本身有关。
  • 你有一个额外的括号 btw - 应该是 (c.getRed()
  • @user1796994 - 谢谢;括号现在已修复。没有语法检查器的剪切和粘贴的危险。 :)
猜你喜欢
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
相关资源
最近更新 更多