java异或16进制运算

有一字符串String s="%01#RDD0110501107"
要让字符串中每个字符转换成16进制然后异或求和,
我将字符串转化成16进制后再异或求和结果总是不对求教,
这字符串每个字符对应的16进制应该是:
25 30 31 23 52 44 44 30 31 31 30 35 30 31 31 30 37

~ 按位非(NOT)(一元运算)
& 按位与(AND)
| 按位或(OR)
^ 按位异或(XOR)
>> 右移
>>> 右移,左边空出的位以0填充

逐个,直接计算好了。.

String.charAt(int) 强制转成byte、int,就可以运算了。

数字就无所谓16进制、还是10进制了。转成String才会有差别。除非你是想运算16进制的字符转成的数字。追问

逐位异或
25^30^31.....最后异或的结果不正确,我想问下那字符串 转换成 16进制
如 %对应的是25 我是不是不能直接用25异或?

追答

具体的,是看你想要的计算方法和结果的。是想逐个字符的ASCII异或,还是字符的ASCII的十六进制里面两个数字异或、再加起来

16进制和10进制,只能在“25"和“37”(前面16进制、后面10进制)里面,才会有差别,如果是
0x25和37是相等的数。

追问

是 将各个字符的16进制进行异或求和
比如“%01#RCSX0000” 这个将各个字符的16进制进行异或求和后是1D
我算半天也不是这数

追答

再说一次,16进制和十进制,在数字里面是相等,别强调16进制,让人误会 是十六进制的字符串。

或者,你讲清楚具体的要求。

追问

上图

追答

sum=0

sum = sum ^ (byte)s.charAt(i);

图片中的数据, 最后sum转成16进制,是1D

温馨提示:答案为网友推荐,仅供参考
相似回答