日期:2014-05-20  浏览次数:20726 次

java图片读取的字节数组中超过127为负数
因为做一个东西,需要把图片的字节数组传送到C#写的服务端,问题也就来了,java这边是如果字节数组中超过127的数都会以负数的形式显示,因为我们知道java读取的方式只支持字节数组,而byte是8位,所以不能超过127,如果超过就会溢出,以负数的形式显示,如果避免这样一个问题,读取的字节数组全部不会出现负数

------解决方案--------------------
你读的是字节,如1111 0011这个字节,你要管他负数还是正数?

只要传到c#那边,它取到的也是1111 0011,就表示没有传错,正负数有关系么?
------解决方案--------------------
传过去在c#那边不就变成正的了嘛

探讨

引用:

你读的是字节,如1111 0011这个字节,你要管他负数还是正数?

只要传到c#那边,它取到的也是1111 0011,就表示没有传错,正负数有关系么?

可能是误会我的意思,java的读取文件的方式有两种一种是字节流,另外一种是字符流
如果是字节流,那么就是以字节数组的形式保存文件的信息,那么情况那就出来了,java的byte是-128~12……

------解决方案--------------------
我也纳闷,为什么不会?
难道中间有隐式的转型?
byte(java)->int->byte(c#)
如果是byte到byte的话,确实不用管正还是负
楼主是怎么传的?又是怎么取的?
------解决方案--------------------
b & 0xff;

这样就可以了。
------解决方案--------------------
这样操作的结果是一个int,自然就变成了正值
------解决方案--------------------
探讨

引用:

我也纳闷,为什么不会?
难道中间有隐式的转型?
byte(java)->int->byte(c#)
如果是byte到byte的话,确实不用管正还是负
楼主是怎么传的?又是怎么取的?

当然是通过gson传送的,没问题的