j2me 客户端 发送数据到服务器的问题!!!

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

{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 就有这个问题存在!
...全文
99 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
codeMoe 2010-10-22
  • 打赏
  • 举报
回复
学习了~~~~
车把式 2010-10-21
  • 打赏
  • 举报
回复
{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};
将数组中的每一个int数据类型转换成byte[4],int 转换 byte[]的方法:

/**
* Int to byte[]
*
* @param value
* @return byte[]
*/
public static byte[] intToByteArray1(int value)
{
byte[] byteA = new byte[4];
//
byteA[0] = (byte) (value >> 24);
byteA[1] = (byte) (value >> 16);
byteA[2] = (byte) (value >> 8);
byteA[3] = (byte) value;
return byteA;
}

之后把所有转换成的byte[],组成一个byte[],在服务端那边解析出来(将byte[]转换成int)
,byte[]转换成int的方法:


/**
* byte[]toInt
*
* @param byteArray
* @return
*/
public static int byteArrayToInt(byte[] byteArray)
{


int mask = 0xff;
int temp = 0;
int n = 0;
int length=byteArray.length;
for (int i = 0; i < length; i++)
{
n <<= 8;
temp = byteArray[i] & mask;
n |= temp;
}
return n;

}
kf156 2010-10-21
  • 打赏
  • 举报
回复
你看下服务端会不会自动把负的值转成正的,如果不会你就&0xff
crazylaa 2010-10-21
  • 打赏
  • 举报
回复
客户端写个函数 int2byte
服务端再回来 byte2int
jjxoyzy 2010-10-21
  • 打赏
  • 举报
回复
强制129会自动变成-127。那服务器那边不就不认了吗?

只有把129这个值发过去服务器才认的吧
kf156 2010-10-21
  • 打赏
  • 举报
回复
这数据怎么来的?如果是文件读出的,大可不必理会这问题。

或你可以强转成byte类型,比如正的129会自动变成-127。

13,097

社区成员

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

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