我写过这样的代码,服务器是java客房端是C++
有两种方法解决
1.把整个都作为一个串处理
如
{
ServiceID=1001;
ErrCode = 1;
SerialNumber = "fsasafsafsafsafsafas";
}
串行化为:"1001"+"0001"+"fsasafsafsafsafsafas" //字符串填充一定数量的"填充符"
然后将其发送,在服务器端(java ?)以相反的顺序读出,这样的方式比较通用,但有一个缺点
ServiceID必须是0-9999,不过对于你的应用应该是足够了
另外一种采用类似 C中的处理方法,将int形转换成一个大小为四的BYTE数组,这样就可以避免
上述方法的缺陷,
如int code = 23;
则转化为数组为:[2][1][0][0]
收到后相反的方式处理我这里有java的代码,C的类是
static int[] _MoveX={0xff,0xff00,0x0ff0000,0xff000000};
static byte[] uintoBytes(int IntegerSize)
{
byte Byte4Size[] = new byte[4];
for(int i = 0 ;i<4;i++)
Byte4Size[i] = (byte)((IntegerSize & _MoveX[i]) >> (i*8));
return Byte4Size;
}
static int byte4toInt(byte[] Byte4Size)
{
int integer = 0;
for(int i = 0;i<4;i++)
{
int int_temp = 0;
int_temp = int_temp | ((int)Byte4Size[i] & 0xff);
integer = integer | (int_temp<<(i*8));
}
return integer;
}欢迎指正!
有两种方法解决
1.把整个都作为一个串处理
如
{
ServiceID=1001;
ErrCode = 1;
SerialNumber = "fsasafsafsafsafsafas";
}
串行化为:"1001"+"0001"+"fsasafsafsafsafsafas" //字符串填充一定数量的"填充符"
然后将其发送,在服务器端(java ?)以相反的顺序读出,这样的方式比较通用,但有一个缺点
ServiceID必须是0-9999,不过对于你的应用应该是足够了
另外一种采用类似 C中的处理方法,将int形转换成一个大小为四的BYTE数组,这样就可以避免
上述方法的缺陷,
如int code = 23;
则转化为数组为:[2][1][0][0]
收到后相反的方式处理我这里有java的代码,C的类是
static int[] _MoveX={0xff,0xff00,0x0ff0000,0xff000000};
static byte[] uintoBytes(int IntegerSize)
{
byte Byte4Size[] = new byte[4];
for(int i = 0 ;i<4;i++)
Byte4Size[i] = (byte)((IntegerSize & _MoveX[i]) >> (i*8));
return Byte4Size;
}
static int byte4toInt(byte[] Byte4Size)
{
int integer = 0;
for(int i = 0;i<4;i++)
{
int int_temp = 0;
int_temp = int_temp | ((int)Byte4Size[i] & 0xff);
integer = integer | (int_temp<<(i*8));
}
return integer;
}欢迎指正!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货