Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android或java中对类的字节数组进行分析_Java_Android - Fatal编程技术网

在android或java中对类的字节数组进行分析

在android或java中对类的字节数组进行分析,java,android,Java,Android,我知道的关于ByteArrayInputStream的唯一方法是read(),但它只返回一个整数 我有一个类,在某个地方有一个新变量。然后我将函数的返回值存储在devCfgBytes中,如何将其读取为int short或byte以将其分配给相应的int变量或其他内容。我该怎么办?感谢您的帮助 public class ScrewCfg { short u16size; int u32crc; boolean bEnable; byte u8RstFreqDiv;

我知道的关于ByteArrayInputStream的唯一方法是read(),但它只返回一个整数

我有一个类,在某个地方有一个新变量。然后我将函数的返回值存储在devCfgBytes中,如何将其读取为int short或byte以将其分配给相应的int变量或其他内容。我该怎么办?感谢您的帮助

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();