zoukankan      html  css  js  c++  java
  • Codec工具类

    import java.math.BigInteger;
    import org.apache.commons.codec.DecoderException;
    import org.apache.commons.codec.binary.Hex;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    /**
     * Codec工具类
     * Integer.toHexString(),Long.toHexString(),BigInteger.toString(16)均无前导0,和Hex编码不一致,所以不直接用
     */
    public class CodecUtil {/**
         * 将字节数组编码为HEX编码的字符串
         */
        public static String encodeHex(byte[] dataBytes) {
            String dataString = null;
            dataString = new String(Hex.encodeHex(dataBytes));
            return dataString;
        }
    
        /**
         * 将HEX编码的字符串解码为字节数组
         */
        public static byte[] decodeHex(String dataString) {
            byte[] dataBytes = null;
            if (dataString != null) {
                try {
                    dataBytes = Hex.decodeHex(dataString.toCharArray());
                } catch (DecoderException e) {
                    logger.warn(e, e);
                }
            }
            return dataBytes;
        }
    
        /**
         * 以十六进制的无符号整数形式返回一个byte参数的字符串表示形式(有前导0)
         */
        public static String toHexString(byte b) {
            String dataString = null;
            dataString = encodeHex(toByteArray(b));
            return dataString;
        }
    
        /**
         * 以十六进制的无符号整数形式返回一个short参数的字符串表示形式(有前导0)
         */
        public static String toHexString(short s) {
            String dataString = null;
            dataString = encodeHex(toByteArray(s));
            return dataString;
        }
    
        /**
         * 以十六进制的无符号整数形式返回一个int参数的字符串表示形式(有前导0)
         */
        public static String toHexString(int i) {
            String dataString = null;
            dataString = encodeHex(toByteArray(i));
            return dataString;
        }
    
        /**
         * 以十六进制的无符号整数形式返回一个long参数的字符串表示形式(有前导0)
         */
        public static String toHexString(long l) {
            String dataString = null;
            dataString = encodeHex(toByteArray(l));
            return dataString;
        }
    
        /**
         * 以十六进制的无符号整数形式返回一个BigInteger参数的字符串表示形式(有前导0)
         */
        public static String toHexString(BigInteger b) {
            String dataString = null;
            dataString = encodeHex(toByteArray(b));
            return dataString;
        }
    
        /**
         * 返回一个字节数组,该数组包含此byte的二进制补码表示形式
         */
        public static byte[] toByteArray(byte b) {
            byte[] dataBytes = null;
            dataBytes = new byte[1];
            dataBytes[0] = b;
            return dataBytes;
        }
    
        /**
         * 返回一个字节数组,该数组包含此short的二进制补码表示形式
         */
        public static byte[] toByteArray(short s) {
            byte[] dataBytes = null;
            dataBytes = new byte[2];
            dataBytes[0] = (byte) ((s >>> 8) & 0xff);
            dataBytes[1] = (byte) (s & 0xff);
            return dataBytes;
        }
    
        /**
         * 返回一个字节数组,该数组包含此int的二进制补码表示形式
         */
        public static byte[] toByteArray(int i) {
            byte[] dataBytes = null;
            dataBytes = new byte[4];
            dataBytes[0] = (byte) ((i >>> 24) & 0xff);
            dataBytes[1] = (byte) ((i >>> 16) & 0xff);
            dataBytes[2] = (byte) ((i >>> 8) & 0xff);
            dataBytes[3] = (byte) (i & 0xff);
            return dataBytes;
        }
    
        /**
         * 返回一个字节数组,该数组包含此long的二进制补码表示形式
         */
        public static byte[] toByteArray(long l) {
            byte[] dataBytes = null;
            dataBytes = new byte[8];
            dataBytes[0] = (byte) ((l >>> 56) & 0xff);
            dataBytes[1] = (byte) ((l >>> 48) & 0xff);
            dataBytes[2] = (byte) ((l >>> 40) & 0xff);
            dataBytes[3] = (byte) ((l >>> 32) & 0xff);
            dataBytes[4] = (byte) ((l >>> 24) & 0xff);
            dataBytes[5] = (byte) ((l >>> 16) & 0xff);
            dataBytes[6] = (byte) ((l >>> 8) & 0xff);
            dataBytes[7] = (byte) (l & 0xff);
            return dataBytes;
        }
    
        /**
         * 返回一个字节数组,该数组包含此BigInteger的二进制补码表示形式
         */
        public static byte[] toByteArray(BigInteger b) {
            byte[] dataBytes = null;
            dataBytes = b.toByteArray();
            return dataBytes;
        }
    
        /**
         * 根据EsmClass返回TpUdhi
         * @return
         */
        public static int getTpUdhiFromEsmClass(int esmClass) {
            int tpUdhi = (esmClass & 0x40) >> 6;
            return tpUdhi;
        }
    
        /**
         * 根据TpUdhi返回EsmClass
         */
        public static int getEsmClassFromTpUdhi(int tpUdhi) {
            int esmClass = tpUdhi << 6;
            return esmClass;
        }
    
    }
  • 相关阅读:
    多数据源报表解析之简单多源报表
    8.5.4 Optimizing InnoDB Redo Logging 优化InnoDB Redo Logging
    8.5.2 Optimizing InnoDB Transaction Management
    8.5.1 Optimizing Storage Layout for InnoDB Tables
    Linux_RHEL7_YUM
    Linux_RHEL7_YUM
    Python基本语法_函数_返回值
    Python基本语法_函数_返回值
    8.4 Optimizing Database Structure 优化数据库结构
    8.3.7 InnoDB and MyISAM Index Statistics Collection InnoDB 和MyISAM 索引统计信息收集
  • 原文地址:https://www.cnblogs.com/mcahkf/p/5177357.html
Copyright © 2011-2022 走看看