程序的目的是:把一个小于0x7FFF的数存放在两个byte字节里(setRecvcounter方法); 需要时从两个byte字节中还原这个int型数据(getRecvcounte方法);问题:为何这个程序在输出时,有时是对的有时不对,比如counter=0x1234,可以还原,counter=0x3773,无法还原,问题出在哪里?class Test {byte ctrlbyte3;byte ctrlbyte4;public static void main(String[] args) {int counter=0x7fff;Test a=new Test();a.setRecvCounter(counter);System.out.println("counter = "+counter);System.out.println("a.getRecvCounter() = "+a.getRecvCounter());}private int getRecvCounter() {return (ctrlbyte3 >> 1) + (ctrlbyte4 << 7);}private void setRecvCounter(int recvcounter) {ctrlbyte3 = (byte) ((recvcounter << 1) & 0xff);ctrlbyte4 = (byte) ((recvcounter >> 7) & 0xff);}
2 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
你的代码我放到C#里面执行,完全正常,基本无需改动即可运行,也可以正常还原,那么唯一的可能性就是你在“问题补充”里面说的可能不正确
试试这样呢:
private int getRecvCounter() {return (((int)ctrlbyte3) >> 1) + (((int)ctrlbyte4) << 7); }
重装过系统,java的环境暂时没时间配置,你自己先试试。
添加回答
举报
0/150
提交
取消