有一个二进制流is,里面按一定规则存放着int double,String 等类型的数据,比如这个流的前32位代表一个int型数据,接下来的64位代表一个double型数据.  接下来的的64位又代表一个double型数据  。。我用 DataInputStream dinreader = new DataInputStream(is);包装is
想要把它解析出来,请问应该用什么方法解析

解决方案 »

  1.   

    int i1 = dinreader.readInt();
    double d1 = dinreader.readDouble();
    double d2 = dinreader.readDouble();
      

  2.   

    请教二楼 , 如果这个流很长,而且还有某些位数d代表string类型的数据该怎么解析
      

  3.   

    byte[] buf = new byte[8192];
    int leng = dinreader.read(buf);
    ByteBuffer byteBuf = ByteBuffer.wrap(buf,0,leng);
    int i1 = byteBuf.getInt();
    double d1 = byteBuf.getDouble();
    double d2 = byteBuf.getDouble();
    如果是String ,得知道长度length,和起始位置offset.
    String str = new String(buf,offset,length);
      

  4.   

    请教:如果规约是:
    第一个数据   前32位:。第一块数据:64位,double
                        64位 double
                        若干位  String
    第二块数据:64位,double
                        64位 double
                        若干位  String
    。。若干块数据,该怎么解析
      

  5.   

    难道楼主是把结构 存到文件里了?
    就像C里面的结构一样的typedef struct{
    int xxxx;
    double xxxx;
    char ****[9];
    double xxxxx;
    }xxxx;就像这个一样,你必须知道,连续的每个字段的类型和长度,才能读正确
      

  6.   


    第一块数据:64位,double
      64位 double
    +32位长度信息(一个整数应该够用了,如果不够,用64位的long)
     长度单位的string
    ....
      

  7.   

    循环调用 DataInputStream.read(b, off, len)分段读取。前64为int 依次读取你想要的类型。。