如果以这种方式存储,那么一定是定长字符串,byte[]是以字节来存储的,你直接取规则的长度就行了啊
如下:
byte[] b = new byte[10];
b[0]='a';
b[1]='b';
b[2]='c';
b[3]='d';
String a = new String(b,0,2);
用你的例子来说:比如你的标志是5位的,编号12位,日期20位,测量值10位
那么应该是
String bz = new String(b,0,5);
String bh = new String(b,5,12);
...............
以此方式解析
byte []b=//输入
用
DataInputStream dis=new DataInputStream(new ByteArrayInputStream(b));
然后就可以
int i=dis.readInt();
String s=dis.readUTF();
//等等,这样读取字节中的具体数值。相当于反序列化操作。
package com.ldc.test;
/**
*
* @author 愿做无聊听众
*
*/
public class Test {
public static void main(String[] args) {
byte[] b=new byte[6];
b[0]=121;
b[1]=122;
b[2]=123;
b[3]=124;
b[4]=125;
b[5]=126;
//开始范围
int startIndex=2;
//结束范围
int endIndex=4;
for (int i = startIndex; i <= endIndex; i++) {
System.out.println(b[i]);
}
}
}
首先将byte数组转化为字符串。然后再分割。分割有两种方法。
1、如果信息项之间有分割符的话,用分隔符split字符串。
2、如果每个信息项是定长的话,那就substring字符处。
b[1]b[2]b[3]