为什么java中我把一张图片读到一个byte数组中,然后把该数组个元素加一,再把数组还原成图片时会不行?
就是我吧一张图片读到一个byte数组px[]中,但是for(inti=0;i<px.length;i++){p[i]=(byte)(p[i]+1);}这样后用p[]去形成...
就是我吧一张图片读到一个byte数组px[]中,但是
for (int i = 0; i < px.length; i++){
p[i] = (byte) (p[i] + 1);
}这样后用p[]去形成另一张图片的时候却不行。但是下面这样还是可以的:
for (int i = 0; i < px.length; i++){
p[i] = px[i]++;
}这样后用p[]去形成另一张图片确实可以的。这是为什么?怎样弄才能让第一种方法可行? 展开
for (int i = 0; i < px.length; i++){
p[i] = (byte) (p[i] + 1);
}这样后用p[]去形成另一张图片的时候却不行。但是下面这样还是可以的:
for (int i = 0; i < px.length; i++){
p[i] = px[i]++;
}这样后用p[]去形成另一张图片确实可以的。这是为什么?怎样弄才能让第一种方法可行? 展开
2个回答
展开全部
应该是类型转换问题,也就是说从一开始你要是使用byte,那么第一种方法是可行的,可能你是从中途把别的类型的要转换成byte,当然不行了,因为比如说,老虎一定是动物,但是动物不一定是老虎,所以你先看看你最前面的是不是定义的比byte大的类型了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写错了?
p[i] = (byte) (p[i] + 1);
你的意思是不是:
p[i] = (byte) (px[i] + 1);
p[i] = (byte) (p[i] + 1);
你的意思是不是:
p[i] = (byte) (px[i] + 1);
更多追问追答
追问
恩,是我打错了,我的意思是p[i] = (byte) (px[i] + 1); 我程序上写的是这样的,但是不行,这是为什么?
追答
第一种方法是把px的每一位+1存到p,第二种方法是把px复制到p,所以第二种方法可以形成图片。
不同格式的图片文件会有不同的header来村信息,如果你把这个header的数据每个byte都+1就没有意义了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询