加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

需要帮助了解以下Java语法

发布时间:2020-12-15 05:05:49 所属栏目:Java 来源:网络整理
导读:public void printPixelARGB(int pixel){ int alpha = (pixel 24) 0xff; int red = (pixel 16) 0xff; int green = (pixel 8) 0xff; int blue = (pixel) 0xff; System.out.println("ARGB : " + alpha + "," + red + "," + green + "," + blue);} 我发现Java语
public void printPixelARGB(int pixel){

 int alpha = (pixel >> 24) & 0xff;

 int red = (pixel >> 16) & 0xff;

 int green = (pixel >> 8) & 0xff;

 int blue = (pixel) & 0xff;

 System.out.println("ARGB : " + alpha + "," + red + "," + green + "," + blue);
}

我发现Java语法显示图像的每个像素的RGB值,但我对这种方法有点困惑.你可以通过解释这种方法来帮助我吗?

0xFF的?那是什么?此外,(像素>> 24)& 0xff是什么意思?提前致谢.

解决方法

像素是一个int

一个int有4个字节,每个字节有8位

举个例子

0xA3 0x41 0x28 0x76

是一个示例像素(1个int,其中包含4个字节,32位)

现在打包在此像素中的是有关透明度的信息(A)红色,绿色和蓝色组件.

透明度是第一个字节(0xA3)
然后是红色(0x41)
绿色(0x28)
然后蓝色(0x76)

所以为了得到红色部分,你向右移动16位,这给了

0x00 0x00 0xA3 0x41

现在红色是最正确的位置,但是你有那个透明度字节,这是不好的,所以你必须删除它

做与做0xFF,真的

0xA341&设为0x00FF

这意味着你和每个位,所以A3的位用00给出0,41的位用FF表示,因为FF是全1,给你原始值,即41

太红了

0x00 0x00 0x00 0x41

所以这段代码就是从一个整数中抽出每个组件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读