java byte流的问题!!!急!

jjxoyzy 2010-10-21 04:23:15
客户端有一组数据

{2,0,92,0,0,127,0,0,0,0,255,255,255,255,0,160,162,4,248,87,245,0,0,0,0,0,88,250,18,0,150,225,81,0,52,250,18,0,24,226,81,0,88,250,18,0,96,250,18,0,123,226,81,0,88,250,18,0,128,254,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,252,18,0,235,39,83,0,108,250,18,0,186,48,83,0};

用 OutputStream out;

out.write(byte[] data) 只能发送byte字节流.

而我上面的有很多 数据 已经 超出 byte范围 -128--127了

这个问题怎么解决.
服务器是用C++写的,C++有 无符号 byte,所以java 就有这个问题存在!
...全文
207 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zqfddqr 2010-10-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 blazingfire 的回复:]
byte是有符号的,只要给定的数不超过255,就没有事,超过127的无符号整数,转换成
byte是会变成负数,但是在内存中表示还是一样的,你传过去c++那变认识。见如下代码:
Java code

public static void main(String[] args) {
int i = 200;
byte b = (byte)i;
……
[/Quote]估计这个行
zmkkobe 2010-10-24
  • 打赏
  • 举报
回复
这个问题记不太清楚了
NE_cogo 2010-10-21
  • 打赏
  • 举报
回复
我这些天也一直在做java读写二进制文件的东东
总的来说java没有无符号型数据还是比较麻烦的
不过这对java写二进制数据没有影响,只对读取二进制文件有影响,这跟数字的内部存储方式有关。

按你说的 如果加密对有无符号敏感的话 必须得修改加密算法嘞
houjin_cn 2010-10-21
  • 打赏
  • 举报
回复
那就修改加密算法吧
jjxoyzy 2010-10-21
  • 打赏
  • 举报
回复
问题是再我发送过去之前,要把所有的字节加密,有符号加密,和无符号加密,完全不一样了。。。

kebin0001 2010-10-21
  • 打赏
  • 举报
回复
C++的無號 byte 範圍在 0~255 所以是可以直接轉型。
只是如果你原來是 int 數組,就得逐一轉型成byte
然後byte轉回int時 用 0xFF遮罩就行。
ex
int a = 255;
byte b = (byte)a;
int c = 0xFF & b;
ouyanghongli168 2010-10-21
  • 打赏
  • 举报
回复
用可以DataOutputStream
blazingfire 2010-10-21
  • 打赏
  • 举报
回复
byte是有符号的,只要给定的数不超过255,就没有事,超过127的无符号整数,转换成
byte是会变成负数,但是在内存中表示还是一样的,你传过去c++那变认识。见如下代码:

public static void main(String[] args) {
int i = 200;
byte b = (byte)i;
System.out.println(b);
}
houjin_cn 2010-10-21
  • 打赏
  • 举报
回复
这没有问题:虽然java会把这些数据当成有符号数,但信息并没有丢失,服务端把它当成无符号数读取就行了
jjxoyzy 2010-10-21
  • 打赏
  • 举报
回复
固定是这么多个字节了!!
eggno8 2010-10-21
  • 打赏
  • 举报
回复
不能把一个byte断成2个来看么?数据形式已经固定了不能改动么?
等高人吧~

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧