base解码问题,为什么要b[i]+=256?

i


            //Base64解码
            byte[] b = decoder.decodeBuffer(imgStr);
            for(int i=0;i<b.length;++i)
            {
                if(b[i]<0)
                {//调整异常数据
                    b[i]+=256;
                }
            }
            OutputStream out = new FileOutputStream(imgFilePath+fileName);
            out.write(b);
            out.flush();
            out.close();
            return fileName;

这个调整异常数据真的有意义吗,是哪个环节可能出错才这么操作?编码的时候可能出现补了1?还是解码中出现的什么问题
而且好像b[i]+=256之后,b[i]的值并没有改变

因为byte是有符号的,它表示的范围是-127~127,如果要映射到无符号0~255,那么0~127不用改变,而-128~-1对应128~255

国内的博客有个通病,某个问题出了,大家就互相一顿抄,到最后答案全一样,至于为什么根本没人说。

上面那个代码就是瞎扯淡,base64使用的都是ASCII码,那你使用Java的类库解码成byte[]后,里面找到字节仍然是ASCII内的数,即肯定在0到127之内。上面那个不用加256