程序的目的是:把一个小于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);
}
慕田峪9158850
牧羊人nacy
相关分类