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