Java爱好者 - 专注于Java技术Java爱好者 - 专注于Java技术

java 异或运算操作16位进制

分享 异或方法代码如下:

  1. package cc.javar.util;
  2. /***
  3.  *  异或效验
  4.  *  @author chenji
  5.  ***/
  6. public class ByteCheck {
  7.     public static runXor(String[] args) {
  8.         String zhi16="5A A5 10 10 11 00 66 66 10 10 10 00 10 19 01 00 04 03 02 00 96 65 68 6C 00 5A A5 10 10 11 00 66 66 10 10 10 00 10 19 01 00 04 03 02 00 96 65 68";
  9.         String code = checkcode(zhi16.trim);
  10.         System.out.println("code:" + code);
  11.     }
  12.     public static String checkcode(String para) {
  13.         int length = para.length() / 2;
  14.         String[] dateArr = new String[length];
  15.         for (int i = 0; i < length; i++) {
  16.             dateArr[i] = para.substring(i * 2, i * 2 + 2);
  17.         }
  18.         String code = "00";
  19.         for (int i = 0; i < dateArr.length; i++) {
  20.             code = xor(code, dateArr[i]);
  21.         }
  22.         if(code.length()<2){
  23.             code = "0"+code;
  24.         }
  25.         return code;
  26.     }
  27.     private static String xor(String strHex_X, String strHex_Y) {
  28.         // 将x、y转成二进制形式
  29.         String anotherBinary = Integer.toBinaryString(Integer.valueOf(strHex_X,
  30.                 16));
  31.         String thisBinary = Integer.toBinaryString(Integer
  32.                 .valueOf(strHex_Y, 16));
  33.         String result = "";
  34.         // 判断是否为8位二进制,否则左补零
  35.         if (anotherBinary.length() != 8) {
  36.             for (int i = anotherBinary.length(); i < 8; i++) {
  37.                 anotherBinary = "0" + anotherBinary;
  38.             }
  39.         }
  40.         if (thisBinary.length() != 8) {
  41.             for (int i = thisBinary.length(); i < 8; i++) {
  42.                 thisBinary = "0" + thisBinary;
  43.             }
  44.         }
  45.         // 异或运算
  46.         for (int i = 0; i < anotherBinary.length(); i++) {
  47.             // 如果相同位置数相同,则补0,否则补1
  48.             if (thisBinary.charAt(i) == anotherBinary.charAt(i))
  49.                 result += "0";
  50.             else {
  51.                 result += "1";
  52.             }
  53.         }
  54.         System.out.println(result);
  55.         return Integer.toHexString(Integer.parseInt(result, 2));
  56.     }
  57. }
本原创文章未经允许不得转载 | 当前页面:Java爱好者 - 专注于Java技术 » java 异或运算操作16位进制

评论

文章评论已关闭!