java将byte数组中的中间一部分值取出来怎么做啊?

Python017

java将byte数组中的中间一部分值取出来怎么做啊?,第1张

如果以这种方式存储,那么一定是定长字符串,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)

...............

以此方式解析

文使用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