Android十六进制按位与,按位异或

2020-04-27  本文已影响0人  不用98K

16进制按位与,16进制按位异或

你可根据此代码写出其他逻辑
废话不多说,直接看代码

16进制按位与

/**
     * 16进制 按位与
     *
     * @param key   16进制 String
     * @param value 16进制 String
     * @return 16 进制 String
     */
    public static String hexBitwiseAND(String key, String value) {
        byte[] bKey = NumUtil.hexString2Bytes(key);
        byte[] bValue = NumUtil.hexString2Bytes(value);
        byte[] bResult = new byte[bKey.length];

        for (int i = 0; i < bKey.length; i++) {
            bResult[i] = (byte) (bKey[i] & bValue[i]);
        }
        return bytesToHexString(bResult);
    }

16进制按位异或

 /**
     * 16进制 按位异或
     *
     * @param key   16进制 String
     * @param value 16进制 String
     * @return 16进制 String
     */
    public static String hexBitwiseXOR(String key, String value) {
        byte[] bKey = NumUtil.hexString2Bytes(key);
        byte[] bValue = NumUtil.hexString2Bytes(value);
        byte[] bResult = new byte[bKey.length];

        for (int i = 0; i < bKey.length; i++) {
            bResult[i] = (byte) (bKey[i] ^ bValue[i]);
        }
        return bytesToHexString(bResult);
    }

bytesToHexString

  /**
     * 将byte数组转为16进制字符串
     */
    public static String bytesToHexString(byte[] src) {
        StringBuilder stringBuilder = new StringBuilder("");
        if (src == null || src.length <= 0) {
            return null;
        }
        for (byte aSrc : src) {
            int v = aSrc & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv.toUpperCase());
        }
        return stringBuilder.toString();
    }
}

本篇文章如果对你有用,记得点个赞哦!
什么?下次一定?? !!!∑(゚Д゚ノ)ノ

上一篇下一篇

猜你喜欢

热点阅读