如下:
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)
...............
以此方式解析
文使用System提供的一个静态方法arraycopy(),实现数组间的复制。
public static native void arraycopy(Object src,int srcPos,Object dest, int destPos,int length)
src:源数组
dest:目的数组
length:要复制的长度
例子:在字节数组中截取指定长度数组
[java] view plain copy
public static byte[] subBytes(byte[] src, int begin, int count) {
byte[] bs = new byte[count]
System.arraycopy(src, begin, bs, 0, count)
return bs
}
这个程序是通过先把字符串转换为byte 数组然后根据你要截取的字符串长度截取字符串的。byte bt[] = str.getBytes()//转化为字节数组。
if(bt[byteNum]<0)//判断截取的长度,截取的长度不能是否小于0
{
String substrx=new String(bt,0,--byteNum)
/*String(byte[] ascii, int hibyte)
已过时。 该方法无法将字节正确转换为字符。从 JDK 1.1 起,完成该转换的首选方法是通过 String 构造方法,该方法接受一个字符集名称或使用平台的默认字符集。*/
//建议: 学习的时候多看看API