Java 以Pi为单位缩放RGB值

Java 以Pi为单位缩放RGB值,java,image,hex,pi,Java,Image,Hex,Pi,为了给我的数学课加分,我正在写一个程序来可视化pi。每6位数字转换为十六进制颜色 然而,当我尝试缩放颜色时,我遇到了一个错误(因为r、g和b各有两个数字,我只能升到99,我想升到255)。我遍历了几千位pi,在每一组6上运行这个缩放函数,然后将它写入BuffereImage中的一个像素,但我一直得到StringIndexOutOfBoundsException。当我尝试设置retArray[I+1]=子阵列[0]时,我得到了相同的错误,但这次是在第5行。知道发生了什么吗 private

为了给我的数学课加分,我正在写一个程序来可视化pi。每6位数字转换为十六进制颜色

然而,当我尝试缩放颜色时,我遇到了一个错误(因为r、g和b各有两个数字,我只能升到99,我想升到255)。我遍历了几千位pi,在每一组6上运行这个缩放函数,然后将它写入BuffereImage中的一个像素,但我一直得到StringIndexOutOfBoundsException。当我尝试设置retArray[I+1]=子阵列[0]时,我得到了相同的错误,但这次是在第5行。知道发生了什么吗

    private String scale(int org){
    tmp = Integer.toString(org);
    retArray = new char[6];
    for(int i=0; i<=4; i+=2){
        tmpsub = tmp.substring(i, i+2);             //line 5
        int2 = Integer.parseInt(tmpsub);
        tmpint = (((float)(int2)/99)*255);
        intie = (int)(tmpint);
        tmpsub = Integer.toHexString(intie);
        subArray = tmpsub.toCharArray();
        retArray[i] = subArray[0];
        retArray[i+1] = subArray[1];      //String Index Exception on this line
    }
    retString = "";
    for(int i=0; i<retArray.length; i++)
        retString+=retArray[i];
    return retString;
}
private字符串比例(int-org){
tmp=Integer.toString(组织);
重新排列=新字符[6];

对于(int i=0;i,问题在于Integer.toHexString()


如果给它一个小于0x10(十进制数为16)的值,则会得到一个长度为1的字符串,然后子数组[1]会引发异常。

问题在于Integer.toHexString()


如果您给它一个小于0x10(十进制16)的值,您将得到一个长度为1的字符串,然后是子数组[1]会抛出一个异常。

我想……这没有什么意义,因为它仍然运行良好,但只运行了大约100次迭代,而不是全部的近10000次。在完成了一系列操作之后,它在部分时间内完成了错误。啊,我想我已经掌握了一些东西。当我只告诉它运行10组时,它没有给我错误。而且恩,我尝试在它处理的任何字符串中搜索数字0,但没有。我想如果我有05这样的字符串,它将用5替换它,并使十六进制字符串的长度为1。另请参见。我猜…这没有什么意义,因为它仍然运行良好,但只运行大约100次迭代,而不是整个10000次。当我只告诉它经过10组时,它没有给我一个错误。然后我试着在它处理的任何字符串中搜索数字0,但没有。我想如果我有像05这样的东西,它会用5替换它,并生成长度十六进制字符串的1。另请参见。