有一个byte [] resSendMsg。。  要求是从 resSendMsg[ 3 ] 开始到 resSendMsg[ 6 ] 作异或和校验,结果放到 resSendMsg[ 7 ] 里面。   我是这样写的。   resSendMsg[ 0 ] = ( byte )'*' ;
   resSendMsg[ 1 ] = ( byte )0xAA ;   
   resSendMsg[ 2 ] = ( byte )0xAA ; 
   resSendMsg[ 3 ] = ( byte )0x3 ;   
   resSendMsg[ 4 ] = ( byte )0x10 ;  
   resSendMsg[ 5 ] = idArray[ 0 ] ;
   resSendMsg[ 6 ] = idArray[ 1 ] ;
   
    resSendMsg[ 7 ] = ( byte )( resSendMsg[ 3 ] ^ resSendMsg[ 4 ] ^ resSendMsg[ 5 ] ^ resSendMsg[ 6 ] ) ;   调试的时候,发现好像这样的是不正确的。   请问高手们,这样的异或和校验的算法应该是什么啊?

解决方案 »

  1.   

    idArray[ 0 ]和idArray[ 1 ]的数据是什么?把数据和结果贴上来看看.
      

  2.   

    idArray[ 0 ]和idArray[ 1 ] 里面存放的也是一个整数
      

  3.   

    有一点要注意, byte是8位的.
      

  4.   

    你的写法是不正确的
    byte和byte异或操作之后就会被默认转成int型,所以你每次操作之后都要强行转换成byte
      

  5.   

    我需要和于别的硬件进行通讯。在byte[]的最后以为需要添加从某位开始的异或和校验值。我试试 jFresH_MaN(Contributing to Eclipse) 的方法。