Java 16進位制字串 取反

xueshenghu發表於2019-08-30

目的:對java 數字字串進行取反

步驟:現將java數字字串轉化為二進位制byte  然後對二進位制byte進行取反   在把byte轉化為16進位制字串。

直接貼程式碼:

public static void main(String[] args) {
        String javaStr="10270000";
        byte [] bytes = hexStringToByte(javaStr);
        byte temp;
        for(int i=0;i<bytes.length;i++){
            temp = bytes[i];
            bytes[i] = (byte) (~temp);
        }
       String bths =  bytesToHexString(bytes);
       System.out.println(bths.toUpperCase());
    }
    /**
     * 將數字字串轉化為二進位制byte陣列
     * @param hex
     * @return
     */
    public static byte[] hexStringToByte(String hex) {
        int len = (hex.length() / 2);
        byte[] result = new byte[len];
        char[] achar = hex.toCharArray();
        for (int i = 0; i < len; i++) {
            int pos = i * 2;
            result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
        }
        return result;
    }
 
    private static byte toByte(char c) {
        byte b = (byte) "0123456789ABCDEF".indexOf(c);
        return b;
    }
    /**
     * 將二進位制陣列轉化為16進位制字串
     * @param src
     * @return
     */
    public static String bytesToHexString(byte[] src){
        StringBuilder stringBuilder = new StringBuilder();
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            //stringBuilder.append(i + ":");//序號 2個數字為1組
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
           stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }

相關文章