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

开始是一个开始标志,然后是编号,接下来表示日期,然后是测量值,接下来是结束位!怎么将 编号,日期,测量值取出来啊,它们在一个byte []数组中!
最新回答
冷天

2024-11-24 08:03:23

如果以这种方式存储,那么一定是定长字符串,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);
...............
以此方式解析
奇葩奇葩蹦擦擦

2024-11-24 09:39:12

byte []b=//输入

DataInputStream dis=new DataInputStream(new ByteArrayInputStream(b));
然后就可以
int i=dis.readInt();
String s=dis.readUTF();
//等等,这样读取字节中的具体数值。相当于反序列化操作。
巷尾青苔

2024-11-24 16:10:22

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]);
}
}
}
真相是真

2024-11-24 13:36:18

首先将byte数组转化为字符串。然后再分割。分割有两种方法。
1、如果信息项之间有分割符的话,用分隔符split字符串。
2、如果每个信息项是定长的话,那就substring字符处。
紫南

2024-11-24 10:15:18

b[1]b[2]b[3]