对2个hex(16进制)字符串进行异或操作详解编程语言

 

private static String hexXOR(String hex1, String hex2){ 
    BigInteger i1 = new BigInteger(hex1, 16); 
    BigInteger i2 = new BigInteger(hex2, 16); 
    BigInteger res = i1.xor(i2); 
    return res.toString(16).toUpperCase(); 
}

 

public static String xorHex(String a, String b) { 
    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 static char toHex(int nybble) { 
    if (nybble < 0 || nybble > 15) { 
        throw new IllegalArgumentException(); 
    } 
    return "0123456789ABCDEF".charAt(nybble); 
}

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15941.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论