在Java中将RBG char数组转换为RGB int值

在Java中将RBG char数组转换为RGB int值,java,Java,我有一个char[]rbg包含: rgb[0]:红色值 rgb[1]:绿色值 rgb[2]:蓝色值 我想使用方法BufferedImage::setRGB(x,y,int-rgb) 如何将char数组转换为int值 注意:我使用Java 编辑:我正在寻找最快的解决方案 谢谢int rgb2=rgb[0] ref:int value=((255&0xFF)buffereImage buffImg=新的buffereImage(176,144,buffereImage.TYPE_int_RGB)

我有一个
char[]rbg
包含:

  • rgb[0]
    :红色值
  • rgb[1]
    :绿色值
  • rgb[2]
    :蓝色值
我想使用方法
BufferedImage::setRGB(x,y,int-rgb)

如何将char数组转换为int值

注意:我使用Java

编辑:我正在寻找最快的解决方案

谢谢

int rgb2=rgb[0]
ref:

int value=((255&0xFF)
buffereImage buffImg=新的buffereImage(176,144,buffereImage.TYPE_int_RGB);
/*将RGB值设置为BuffereImage*/
int[]原始=新int[rgbCameraData.length*4/3];
对于(int i=0;i|((rgbCameraData[3*i+0]&0xFF)java会自动将
rgb[0]
升级到
int
?我不确定。这是一个比其他解决方案快吗?@egrunin:是的,因为16和8是int。@Matthieu:可能。但除非速度非常重要,否则应该使用库函数(即,如果您使用的是awt的BuffereImage,请使用RealHowTo示例)。如果您使用单代码,请将其设置为静态最终函数。编译器将对其进行内联并提高可读性。是否需要alpha通道?是的,每种颜色都有一个定义其透明度的alpha。255表示完全不透明。此答案比第一个答案快得多。哦,这是一个“干净”的答案解决方案,但这比原始演算快吗(像其他解决方案一样)?基本上是一样的,看看java.awt.Color源代码()为什么你有一个字符数组?你的R,G和B组件只有一个数字吗?R,G和B是8位,所以每个都是一个字符。这些数据来自SOCKE的C++程序。你的要求并不清楚:你到底想做什么?包含?比如说,对于零,它是否包含0或字符“0”?无论如何,一个Java字符是16位的,而不是8位的,因此这是一个完全的传输浪费,也是一个处理浪费(显然,速度是一个问题,请看您粗体的“我正在寻找最快的解决方案”编辑。最快的解决方案将传输更为意义的东西,从C++程序。嗨,你说得对,我不应该使用char,但字节!谢谢。问题是当使用字节,它们被签署,所以我有负面的价值,创造错误。我怎么能只有无符号字节?
int rgb2 = rgb[0] << 16 | rgb[1] << 8 | rgb[2];
import java.awt.Color;

Color color = new Color(rgb[0],rgb[1],rgb[2]);
int rgb = color.getRGB();
int value = ((255 & 0xFF) << 24) | //alpha
            (((int)rgb[0] & 0xFF) << 16) | //red
            (((int)rgb[1] & 0xFF) << 8)  | //green
            (((int)rgb[2] & 0xFF) << 0); //blue
BufferedImage buffImg = new BufferedImage(176, 144, BufferedImage.TYPE_INT_RGB);

            /*Setting RGB values to BufferedImage*/
            int[] raw = new int[rgbCameraData.length * 4 / 3];
            for (int i = 0; i < rgbCameraData.length / 3; i++) {
                raw[i] = 0xFF000000
                        | ((rgbCameraData[3 * i + 0] & 0xFF) << 16)
                        | ((rgbCameraData[3 * i + 1] & 0xFF) << 8)
                        | ((rgbCameraData[3 * i + 2] & 0xFF));
            }
            buffImg.setRGB(0, 0, 176, 144, raw, 0, 176);
            System.out.println("BufferedImage  :" + img);