Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转换像素颜色(字节到位和位到字节)_Java - Fatal编程技术网

Java 转换像素颜色(字节到位和位到字节)

Java 转换像素颜色(字节到位和位到字节),java,Java,我想通过播放像素位来操纵图像。所以,我想隐藏我从PixelGrabber抓取的像素。argb值以字节为单位。现在,我想将字节数组转换为位并对其进行操作。然后再转换回字节数组 例如: -1057365分为111011111 11011101 10101011 11111111和 11101111 11011101 10101011 11111111插入-1057365 有人知道有什么有效的方法在他们之间转换吗?或者java已经为它实现了方法,我不知道 谢谢你的帮助 您可能想看看 /编辑 要将字节[

我想通过播放像素位来操纵图像。所以,我想隐藏我从PixelGrabber抓取的像素。argb值以字节为单位。现在,我想将字节数组转换为位并对其进行操作。然后再转换回字节数组

例如: -1057365分为111011111 11011101 10101011 11111111和 11101111 11011101 10101011 11111111插入-1057365

有人知道有什么有效的方法在他们之间转换吗?或者java已经为它实现了方法,我不知道


谢谢你的帮助

您可能想看看

/编辑
要将
字节[]
转换为
int

int i = 0;
for(byte b : newArgb) { // you could also omit this loop
    i <<= 8;            // and do this all on one line
    i |= (b & 0xFF);    // but it can get kind of messy.
}

你可能想看看

/编辑
要将
字节[]
转换为
int

int i = 0;
for(byte b : newArgb) { // you could also omit this loop
    i <<= 8;            // and do this all on one line
    i |= (b & 0xFF);    // but it can get kind of messy.
}

我假设您拥有的值是ARGB代码的原始4字节int表示。 每个通道的宽度为1字节,从0到254不等,它们共同构成0-255^4(减1)的整个范围

获取不同通道值的最佳方法是结合掩蔽和将argb值移到不同字段中

int alpha = (pixel >> 24) & 0xff;
int red   = (pixel >> 16) & 0xff;
int green = (pixel >>  8) & 0xff;
int blue  = (pixel      ) & 0xff;

我假设您的值是ARGB代码的原始4字节int表示。 每个通道的宽度为1字节,从0到254不等,它们共同构成0-255^4(减1)的整个范围

获取不同通道值的最佳方法是结合掩蔽和将argb值移到不同字段中

int alpha = (pixel >> 24) & 0xff;
int red   = (pixel >> 16) & 0xff;
int green = (pixel >>  8) & 0xff;
int blue  = (pixel      ) & 0xff;

为什么不坚持使用位屏蔽和位移位,这样就可以像小整数一样与它们交互?比bits方便得多。如果你真的想,你可以在一个位上处理1和0。为什么不坚持使用位屏蔽和位移位,这样你就可以像小整数一样与它们交互?比bits方便得多。如果你真的想,你可以为一个位处理1和0。反向:
(alpha是的。我用这种方法来获取我的位。但是我在将位转换为字节时遇到问题。我的意思是11101111011101 10101011 11111111转换为-1057365。你在哪种类型的变量中存储值?反向:
(alpha是的。我用这种方法来获取我的位。但是我在将位转换为字节时遇到了问题。我的意思是11101111011101 10101011 11111111111转换为-1057365。在什么类型的变量中存储值?它能将111011111 11011101 10101011 11111111转换为-1057365吗?你可以转换
字节[]使用移位将
设置为
int
。请参见我的编辑.sry..位的含义。设置(0);//将第0位设置为真位。清除(0);//将第0位设置为false@user1621008
int
有32位。
位。设置(0)
会将第一位设置为
true
,或1。
位。清除(0)
会将第一位设置为
false
,或0。我对此有了一些想法。谢谢!但我想我需要新的java版本来使用BitSet类。它能将11101111111101 10101011 11111111111转换为-1057365吗?你可以使用移位将
字节[]
转换为
int
。请参阅我的edit.sry..bits.set(0)是什么意思;//将第0位设置为真位。清除(0);//将第0位设置为false@user1621008
int
有32位。
位。设置(0)
会将第一位设置为
true
,或1。
位。清除(0)
会将第一位设置为
false
,或0。我对此有了一些想法。谢谢!但我想我需要新的java版本来使用BitSet类,对吗?