从香港数据源接收到的是一串16进制串,接收方法如下: public void messageReceived(IoSession session, Object message) 
throws Exception { 
ByteBuffer buf = (ByteBuffer) message; 
StringBuffer strBuff = new StringBuffer(); 
while(buf.hasRemaining()){ 
strBuff.append((char)buf.get()); 

                System.out.println(strBuff); 
} message 为接收到的对象,message与buf打印出来如下: buf=DirectBuffer[pos=0 lim=55 cap=8192: 02 11 0f 01 00 eb b0 55 4b 31 32 33 34 35 00 00 1c 35 1d 53 
                 50 4f 54 5f 46 58 5f 45 55 52 4a 50 59 1e 32 32 1f 31 35 37 
                 2e 30 36 1e 32 35 1f 31 35 37 2e 30 36 31 1c 03 41 71] 每个接收到的数据串包含若干个数据包(上面的例子刚好只有一个数据包),依据给定的数据格式,上条数据包解析如下: 02 -------STX(正文开始,1字节) 
11 -------Application Data(这是应用数据,1字节) 
0f -------Header Length(包头的长度,1字节) 
01 -------Application ID(ID号,1字节) 
00 -------Variable Length Packet(包可变部分长度,1字节) 
eb b0 ----Sequence Number B0EB(消息序列号,以1递增,2字节) 
55 4b 31 32 33 34 35 00 00-------Reserved Bytes(保留字节,9字节) ===============================以上部分可以认为是包头=========================================================== 1c 35 1d --------Symbol to Follow(标志位,指示下面开始为symbol,3字节) 
53 50 4f 54 5f 46 58 5f 45 55 52 4a 50 59 ------“SPOT_FX_EURJPY”(symbol,用字符型从bytebuffer读取出来,不定长) 
1e -------Field ID to Follow(标志位,指示下面为字段名代码,1字节) 
32 32 ---------“22” (Field ID for Bid)(22,用ASC码读取出来,22代表字段名为Bid) 
1f ----------Field ID Termination(标志位,指示下面为字段值,1字节) 
31 35 37 2e 30 36 -----------“157.06”(不定长,以下是“1E字段名1F字段值”.....循环若干个) 
1e ----------Field ID to Follow 
32 35 -----------“25” (Field ID for Ask) 
1f ------------Field ID Termination 
31 35 37 2e 30 36 31 ---------“157.061” ================================以上部分可以认为是包体(既数据部分),下面为包尾============================================ 1c 03----------- End of Message and ETX(正文结束,1字节) 
41 71------------  <FCS1> <FCS2> Frame Check(帧校对,2字节) 
如果该串全部是单一类型的,比较好解析,只要用buf.getchar()等方法原样读取出来即可, 
现在问题是这个包里有好多个类型,所以要做的工作如下: 1、把数据串按一个个数据包分割开来,以02为分割点。 
2、对每个数据包再进行分割,对相应位置的串按相应格式get出来。 小弟才疏学浅,只知道把该串转成string后用split进行分割,这个是可以实现的,但是分割成string后的字段名、字段值想让它再转成bytebuffer, 
好用get()方法按相应格式取出,可就是转不过来,请教各位XDJM,有什么办法转?或则依据这个串格式,有没有更便捷的解析方法? 小弟在这跪谢啦! PS:1)我是用这个方法get的 String[] temp = buf.getHexDump().split("02"); 
    getHexDump()是mina框架里的方法,返回的结果是string,值是“02 11 0f 01 00 eb b0......”      2)string转成bytebuffer我试过这个方法:ByteBuffer buf= ByteBuffer.wrap(string.getBytes()); 
       可以转,但是转完,再get出来: 
             StringBuffer symbol = new StringBuffer(); 
             while(buf.hasRemaining()){ 
                symbol.append((char)buf.get()); 
            } 
       symbol的值与string是一样的,白转换了。