java将两个字符串转为十六进制进行异或的结果是多少进制的,怎么做?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java将两个字符串转为十六进制进行异或的结果是多少进制的,怎么做?相关的知识,希望对你有一定的参考价值。
比如字符串,S1和T1
S1="0412134FFFFFFFFFF"
T1="00007770000200"
这两个字符串进行异或,如何进行,得到的结果是多少进制的,把异或的结果转成十六进制的字符串又要怎么做?
public class Rectangle
public static void main ( String[] args )
String S1 = "0412134FFFFFFFFFF";
String T1 = "00007770000200";
long si = Long.parseLong (S1, 16);
long ti = Long.parseLong (T1);
long st = si ^ ti;
// 很显然是 十进制 0 ~ 9
// 4693090553043039415
System.out.println (st);
String hex = Long.toHexString (st);
// 412134fe30df34b7
System.out.println (hex);
追问
按照异或的算法,首位0和0异或的结果不是应该是0吗?为什么算出来后结果的第一位是4?还是说内部执行的机制不是这样的?求教,谢谢
追答^:翻转,保留 X ^ 0000 1111 = 10100001 异或,异1(不同就1)
进制不同,不可相提并论追问
同样是字符串转Long进行异或,为什么没有对T1进行16进制转换?这样的结果是41234fe30df34b7
可是对T1也进行16进制转换后,结果却是41234888ffffdff
你的第一个字符串有F,是16进制
你的第二个字符串符合八进制
默认而已追问
我需要两个字符串都是16进行进行异或,虽然第二个是0打头,这样是为了两个字符串的长度一致。
还有,这样的出来的结果是15位的,而我需要的结果也必须是16位的,使用Long进行异或的话,是因为整形的丢掉了首位的0,我不能再得到的结果前面去拼一个0凑到16,也就是说这样的结果其实是不符合要求的,应该怎么做呢?
如果用你的整形的话,第一个就越界报错了
又不能凑0,那你就格式化你的结果,NumberFormat什么的,如果还不可以,那我也不知道了
char[] chars = new char[a.length()];
for (int i = 0; i < chars.length; i++)
chars[i] = toHex(fromHex(a.charAt(i)) ^ fromHex(b.charAt(i)));
return new String(chars);
private static int fromHex(char c)
if (c >= '0' && c <= '9')
return c - '0';
if (c >= 'A' && c <= 'F')
return c - 'A' + 10;
if (c >= 'a' && c <= 'f')
return c - 'a' + 10;
throw new IllegalArgumentException();
private char toHex(int nybble)
if (nybble < 0 || nybble > 15)
throw new IllegalArgumentException();
return "0123456789ABCDEF".charAt(nybble);
也可以这么写:
String s1 = "426F62";
String s2 = "457665";
int n1 = Integer.parseInt(s1, 16);
int n2 = Integer.parseInt(s2, 16);
int n3 = n1 ^ n2;
String s3 = String.format("%06x", n3);追答
亲,两种算法
记得优先采纳哦
java异或"^"的特性
1,什么是异或
异或是一种逻辑运算符,使用符号“^”表示,异或就是在对二进制进行操作的过程中,相同的取0,不同的取1。
2,证明a==a^b^b;
关于这个结论读者肯定都知道,其中b^b的结果肯定全是0,然后任何数和0取异或都不会变。所以a==a^b^b是成立的。
3,使用异或的特性互调两个数
如果需要互调整数a和b,那么可以:
int temp=a; a=b; b=temp;
也可以使用异或:
a=a^b; b=a^b; a=a^b;
以上是关于java将两个字符串转为十六进制进行异或的结果是多少进制的,怎么做?的主要内容,如果未能解决你的问题,请参考以下文章