在android或java中对类的字节数组进行分析
我知道的关于ByteArrayInputStream的唯一方法是read(),但它只返回一个整数 我有一个类,在某个地方有一个新变量。然后我将函数的返回值存储在devCfgBytes中,如何将其读取为int short或byte以将其分配给相应的int变量或其他内容。我该怎么办?感谢您的帮助在android或java中对类的字节数组进行分析,java,android,Java,Android,我知道的关于ByteArrayInputStream的唯一方法是read(),但它只返回一个整数 我有一个类,在某个地方有一个新变量。然后我将函数的返回值存储在devCfgBytes中,如何将其读取为int short或byte以将其分配给相应的int变量或其他内容。我该怎么办?感谢您的帮助 public class ScrewCfg { short u16size; int u32crc; boolean bEnable; byte u8RstFreqDiv;
public class ScrewCfg {
short u16size;
int u32crc;
boolean bEnable;
byte u8RstFreqDiv;
final static short screwCfgLegth = 438;
//...
}
//new obj in someplace
ScrewCfg devCfg = new ScrewCfg();
//....
btnLoadConfig.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
byte[] devCfgBytes = new byte[ScrewCfg.screwCfgLegth];
int ret = mcLib.ReadUserData(devCfgBytes, ScrewCfg.screwCfgLegth);
if(ret < 0){
showMessage("Load Screw configuration Error!");
return;
}
//any method like this?
//if i want to read it as boolean, then use one byte
//read it as integer, then use the four bytes
ByteArrayInputStream in = new ByteArrayInputStream(devCfgBytes, 1, 1);
DevCfg.bEnable = in.getBoolean();
in = new ByteArrayInputStream(devCfgBytes, 2, 4);
DevCfg.u32crc = in.getInt();
}
});
公共类{
短u16码;
int u32crc;
布尔可弯曲;
字节u8RstFreqDiv;
最终静短螺钉cfglegth=438;
//...
}
//某处的新obj
ScrewCfg devCfg=新的ScrewCfg();
//....
btnLoadConfig.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
字节[]devCfgBytes=新字节[ScrewCfg.screwCfgLegth];
int ret=mcLib.ReadUserData(devCfgBytes,ScrewCfg.screwCfgLegth);
如果(ret<0){
showMessage(“加载螺钉配置错误!”);
返回;
}
//有这样的方法吗?
//如果我想将其读取为布尔值,那么使用一个字节
//将其读取为整数,然后使用四个字节
ByteArrayInputStream in=新的ByteArrayInputStream(devCfgBytes,1,1);
DevCfg.bEnable=in.getBoolean();
in=新的ByteArrayInputStream(devCfgBytes,2,4);
DevCfg.u32crc=in.getInt();
}
});
使用数据输入流
像
然后可以使用readInt
,readShort
等
in = new DataInputStream(new BufferedInputStream(ByteArrayInputStream(devCfgBytes, 1, 1)));
int anInt = in.readInt();
short aShort = in.readShort();
boolean aBool = in.readBoolean();