IT巷的乞者 2014-03-06 06:01 采纳率: 0%
浏览 722

Java新手求指教。最好注释多点我能看明白

Java中怎么从服务器发过来的一堆数据中选出一条指令去解析
例:FFFFFF 开始码 .. 地址域 控制码 校验码 结束码(16位)

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-01 20:05
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要从服务器发送过来的二进制数据中选择出一条指令并进行解析,你可以使用Java的反射API来实现这个目标。

    以下是一个简单的示例:

    import java.lang.reflect.Method;
    
    public class Main {
        public static void main(String[] args) throws Exception {
            byte[] data = new byte[]{0x80, 0xff, 0xff, 0xff, 0xff, 0xff}; // 假设这是一个二进制序列
    
            Method method = null;
            for (Method m : Class.forName("com.example.MyClass").getMethods()) {
                if (m.getName().equals("myMethod")) {
                    method = m;
                    break;
                }
            }
    
            if (method == null) {
                System.out.println("No such method");
                return;
            }
    
            Object obj = Class.forName("com.example.MyClass").newInstance();
            byte[] params = {0x01, 0x02};
            int length = 4; // 注意这里的长度可能不等于方法的参数数量
            byte[] result = new byte[length];
            method.invoke(obj, params, result);
    
            // 这里是解析结果的方法,你需要根据你的具体需求进行修改
            String instruction = new String(result);
            System.out.println(instruction); // 输出解析后的指令
        }
    }
    

    在这个例子中,我们首先通过反射找到一个名为myMethod的方法,并尝试调用它。如果找不到这样的方法,程序将输出"no such method"。

    然后,我们创建了一个MyClass的对象,并传入了两个参数和一个长度。接着,我们调用了方法并获取返回的结果。最后,我们可以解析这个结果以获得指令。

    请注意,这只是一个基本的例子。在实际应用中,你可能需要处理更复杂的情况,例如处理异常、检查输入参数等。

    评论

报告相同问题?