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 就有这个问题存在!
...全文
64 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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。
回复
相关推荐
发帖
J2ME
创建于2007-09-28

1.3w+

社区成员

Java J2ME
申请成为版主
帖子事件
创建了帖子
2010-10-21 04:23
社区公告
暂无公告