zoukankan      html  css  js  c++  java
  • Java 字符串、数值与16进制相互转化

    字符串、数值与16进制相互转化

    首先创建一个工具类:

    package c;
    
    public class DataUtils {
    
    	/*
    	 * 字节数组转16进制字符串
    	 */
        public static String bytesToHexString(byte[] bArr) {
            if (bArr == null) {
                return null;
            }
            StringBuffer sb = new StringBuffer(bArr.length);
            String sTmp;
    
            for (int i = 0; i < bArr.length; i++) {
                sTmp = Integer.toHexString(0xFF & bArr[i]);
                if (sTmp.length() < 2)
                    sb.append(0);
                sb.append(sTmp);
            }
    
            return sb.toString();
        }
    
        /**
         * @param n
         * @Title: intTohex
         * @Description: int型转换成16进制
         * @return: String
         */
        public static String intTohex(int n) {
            StringBuffer s = new StringBuffer();
            String a;
            char[] b = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
            while (n != 0) {
                s = s.append(b[n % 16]);
                n = n / 16;
            }
            a = s.reverse().toString();
            if ("".equals(a)) {
                a = "00";
            }
            if (a.length() == 1) {
                a = "0" + a;
            }
            return a;
        }
    
    
        /**
         * 字符串转16进制字符串
         *
         * @param strPart
         * @return
         */
        public static String string2HexString(String strPart) {
            StringBuffer hexString = new StringBuffer();
            for (int i = 0; i < strPart.length(); i++) {
                int ch = (int) strPart.charAt(i);
                String strHex = Integer.toHexString(ch);
                hexString.append(strHex);
            }
            return hexString.toString();
        }
    
        /**
         * 十六进制转字节数组
         *
         * @param src
         * @return
         */
        public static byte[] hexString2Bytes(String src) {
            int l = src.length() / 2;
            byte[] ret = new byte[l];
            for (int i = 0; i < l; i++) {
                ret[i] = (byte) Integer
                        .valueOf(src.substring(i * 2, i * 2 + 2), 16).byteValue();
            }
            return ret;
        }
    
    
        /**
         * Hex字符串转byte
         *
         * @param inHex 待转换的Hex字符串
         * @return 转换后的byte
         */
        public static byte hexToByte(String inHex) {
            return (byte) Integer.parseInt(inHex, 16);
        }
    
    
        /**
         * hex字符串转byte数组
         *
         * @param inHex 待转换的Hex字符串
         * @return 转换后的byte数组结果
         */
        public static byte[] hexToByteArray(String inHex) {
            int hexlen = inHex.length();
            byte[] result;
            if (hexlen % 2 == 1) {
                //奇数
                hexlen++;
                result = new byte[(hexlen / 2)];
                inHex = "0" + inHex;
            } else {
                //偶数
                result = new byte[(hexlen / 2)];
            }
            int j = 0;
            for (int i = 0; i < hexlen; i += 2) {
                result[j] = hexToByte(inHex.substring(i, i + 2));
                j++;
            }
            return result;
        }
    
    

    Java 代码:

            byte[] b = {0x12, 0x23, 0x5a};
            // 字节转换为16进制字符串
            String hexStr = bytesToHexString(b);
            System.out.println("hexStr:" + hexStr);
            // int 转 16进制字符串
            String hexStr1 = Integer.toHexString(2345);
            System.out.println("hexStr1:" + hexStr1);
            // 16进制转字节数组
            byte[] c = hexString2Bytes(Integer.toHexString(2345));
            System.out.println("十六进制字节数组:" + c);
            // int 转16进制字符串
            System.out.println(intTohex(2345));
            // int转16进制 后转16进制字节数组
            System.out.println("十六进制字节数组:" + DataUtils.hexToByteArray(Integer.toHexString(2345)));
    

    打印结果:

    hexStr:12235a
    hexStr1:929
    十六进制字节数组:[B@63c12fb0
    929
    十六进制字节数组:[B@b1a58a3
    
  • 相关阅读:
    python-多任务-进程
    注解_Annotation
    ZIP压缩输入/输出流
    什么是API,这篇文章让你豁然开朗
    异常处理(在控制台输入数据)
    控件监听与面板监听
    多态与继承
    Java——socketser与cli
    20170307
    20180305
  • 原文地址:https://www.cnblogs.com/wjw1014/p/11706862.html
Copyright © 2011-2022 走看看