private static byte[] CMD=new byte[]{ 
(byte)0x0000,(byte)0x0001,(byte)020002,(byte)0x0004, 
(byte)0x4002,(byte)0x4004,(byte)0x4008,(byte)0x4010, 
(byte)0x4020,(byte)0x4040,(byte)0x4080,(byte)0x2001, 
(byte)0x2002 
}; 当要获取CMD[10]的时候,返回的值是:0xff80
要获得CMD[11],怎么的出来时的确实CMD[1]的数据呢? 
System.out.println(CMD[ptzcmd]); 
结果却是CMD[1]的

解决方案 »

  1.   

    private static byte[] CMD=new byte[]{ 
    (byte)0x4002,(byte)0x4004,(byte)0x4008
    };
    改为:
    private static byte[] CMD=new byte[]{ 
    (byte)0x40,(byte)0x02,(byte)0x40,(byte)0x04,(byte)0x40,(byte)0x08};
      

  2.   

    今天怎么有那么多的 (byte)0x4002 啊?byte 只能存放 8 位有符号整数,0x4002 需要 16 位,至少得使用两个 byte 才能放下的。
      

  3.   

    答:要么是拆开,要么是:
    private static byte[] CMD=new byte[]{ 
    (byte)0x0000,(byte)0x0001,(byte)020002,(byte)0x0004, 
    (byte)0x4002,(byte)0x4004,(byte)0x4008,(byte)0x4010, 
    (byte)0x4020,(byte)0x4040,(byte)0x4080,(byte)0x2001, 
    (byte)0x2002 
    }; 
    改为:
    private static short[] CMD=new short[]{ 
    (byte)0x0000,(byte)0x0001,(byte)020002,(byte)0x0004, 
    (byte)0x4002,(byte)0x4004,(byte)0x4008,(byte)0x4010, 
    (byte)0x4020,(byte)0x4040,(byte)0x4080,(byte)0x2001, 
    (byte)0x2002 
    }; 
      

  4.   

    由于红色部分是相同的
    byte是两个字节,而你给的是4个字节,强制转换会截取数据,只剩下最后的两个字节了,
    所以你看到的是那样的结果。