Java中byte[]的异或和校验(算法)的问题(急)。。100分

vvpang 2005-08-08 11:32:42
有一个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 ] ) ;

调试的时候,发现好像这样的是不正确的。

请问高手们,这样的异或和校验的算法应该是什么啊?

...全文
1651 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vvpang 2005-08-09
  • 打赏
  • 举报
回复
我需要和于别的硬件进行通讯。在byte[]的最后以为需要添加从某位开始的异或和校验值。

我试试 jFresH_MaN(Contributing to Eclipse) 的方法。
shellfj 2005-08-09
  • 打赏
  • 举报
回复
同意楼上.
jFresH_MaN 2005-08-08
  • 打赏
  • 举报
回复
你的写法是不正确的
byte和byte异或操作之后就会被默认转成int型,所以你每次操作之后都要强行转换成byte
homesos 2005-08-08
  • 打赏
  • 举报
回复
这样的写法是正确的。

不过,不知你想要干什么?
vvpang 2005-08-08
  • 打赏
  • 举报
回复
嗯。。记得了。

现在最关键的问题是,我不知道正确的值应该是多少。对方是一个通讯的硬件的东东。

我现在只能保证这样算是没有问题的。
lei198203 2005-08-08
  • 打赏
  • 举报
回复
有一点要注意, byte是8位的.
lei198203 2005-08-08
  • 打赏
  • 举报
回复
那么数值是多少?
你得到的结果又是多少?
vvpang 2005-08-08
  • 打赏
  • 举报
回复
idArray[ 0 ]和idArray[ 1 ] 里面存放的也是一个整数
lei198203 2005-08-08
  • 打赏
  • 举报
回复
idArray[ 0 ]和idArray[ 1 ]的数据是什么?把数据和结果贴上来看看.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧