我要用UDP向服务器传送数据,, 具体传送数据包括以下, 它只是给了一个关于C的数据类型PACKED struct Packet {
byte quest; // 第一个字节
uint64 time:
uint32 lon;
uint32 lat;
uint32 imsi_len;
char imsi[15]}
以上是给的数据类型,要求必须严格按照相关类型所占的字节数据来传递
我现在假设有如下数据; String imsi="123456789123456"
quest = 0x21
time= 123456
lon = 456.5
lat= 45.6
imsi_len= 15
imsi[15] =imsi
我的java代码如下写
byte first = 0x21;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeByte(first);// 添加第一个字节 (文件类别) oos.writeLong(_location.getTime());
oos.writeInt((int) (lon ));
oos.writeInt((int) (lat)); oos.writeInt(IMSI.length()); // IMSI的长度String 460030900191125 oos.writeChars(IMSI);// chars oos.close(); byte[] t = baos.toByteArray();高手帮忙看一下,那儿不对啊? 帮忙看一下。
byte quest; // 第一个字节
uint64 time:
uint32 lon;
uint32 lat;
uint32 imsi_len;
char imsi[15]}
以上是给的数据类型,要求必须严格按照相关类型所占的字节数据来传递
我现在假设有如下数据; String imsi="123456789123456"
quest = 0x21
time= 123456
lon = 456.5
lat= 45.6
imsi_len= 15
imsi[15] =imsi
我的java代码如下写
byte first = 0x21;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeByte(first);// 添加第一个字节 (文件类别) oos.writeLong(_location.getTime());
oos.writeInt((int) (lon ));
oos.writeInt((int) (lat)); oos.writeInt(IMSI.length()); // IMSI的长度String 460030900191125 oos.writeChars(IMSI);// chars oos.close(); byte[] t = baos.toByteArray();高手帮忙看一下,那儿不对啊? 帮忙看一下。
byte quest; // 第一个字节
uint64 time:
uint32 lon;
uint32 lat;
uint32 imsi_len;
char imsi[15]}主要是这里的 char imsi[15] 这里C语言中的定义如果我在java中得到的值为 String imsi="123456789123456";
用ObjectOutputStream dos=new ObjectOutputStream()的话,怎么把这个 imsi 写入到输出流中 才可以和C语言中的相对应上?dos.write(imsi.getBytes()) ? dos.writeChars(imsi) ? 这两种写法都不对,那该怎么写? 谢谢!