Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换

来源:互联网 发布:王乐平1368单词淘宝 编辑:程序博客网 时间:2024/05/18 02:34

Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换

发表于1年前(2013-03-08 16:05)   阅读(4063) | 评论(0) 19人收藏此文章, 我要收藏
赞1
public class DigitalTrans {    /**     * 数字字符串转ASCII码字符串     *      * @param String     *            字符串     * @return ASCII字符串     */    public static String StringToAsciiString(String content) {        String result = "";        int max = content.length();        for (int i = 0; i < max; i++) {            char c = content.charAt(i);            String b = Integer.toHexString(c);            result = result + b;        }        return result;    }    /**     * 十六进制转字符串     *      * @param hexString     *            十六进制字符串     * @param encodeType     *            编码类型4:Unicode,2:普通编码     * @return 字符串     */    public static String hexStringToString(String hexString, int encodeType) {        String result = "";        int max = hexString.length() / encodeType;        for (int i = 0; i < max; i++) {            char c = (char) DigitalTrans.hexStringToAlgorism(hexString                    .substring(i * encodeType, (i + 1) * encodeType));            result += c;        }        return result;    }    /**     * 十六进制字符串装十进制     *      * @param hex     *            十六进制字符串     * @return 十进制数值     */    public static int hexStringToAlgorism(String hex) {        hex = hex.toUpperCase();        int max = hex.length();        int result = 0;        for (int i = max; i > 0; i--) {            char c = hex.charAt(i - 1);            int algorism = 0;            if (c >= '0' && c <= '9') {                algorism = c - '0';            } else {                algorism = c - 55;            }            result += Math.pow(16, max - i) * algorism;        }        return result;    }    /**     * 十六转二进制     *      * @param hex     *            十六进制字符串     * @return 二进制字符串     */    public static String hexStringToBinary(String hex) {        hex = hex.toUpperCase();        String result = "";        int max = hex.length();        for (int i = 0; i < max; i++) {            char c = hex.charAt(i);            switch (c) {            case '0':                result += "0000";                break;            case '1':                result += "0001";                break;            case '2':                result += "0010";                break;            case '3':                result += "0011";                break;            case '4':                result += "0100";                break;            case '5':                result += "0101";                break;            case '6':                result += "0110";                break;            case '7':                result += "0111";                break;            case '8':                result += "1000";                break;            case '9':                result += "1001";                break;            case 'A':                result += "1010";                break;            case 'B':                result += "1011";                break;            case 'C':                result += "1100";                break;            case 'D':                result += "1101";                break;            case 'E':                result += "1110";                break;            case 'F':                result += "1111";                break;            }        }        return result;    }    /**     * ASCII码字符串转数字字符串     *      * @param String     *            ASCII字符串     * @return 字符串     */    public static String AsciiStringToString(String content) {        String result = "";        int length = content.length() / 2;        for (int i = 0; i < length; i++) {            String c = content.substring(i * 2, i * 2 + 2);            int a = hexStringToAlgorism(c);            char b = (char) a;            String d = String.valueOf(b);            result += d;        }        return result;    }    /**     * 将十进制转换为指定长度的十六进制字符串     *      * @param algorism     *            int 十进制数字     * @param maxLength     *            int 转换后的十六进制字符串长度     * @return String 转换后的十六进制字符串     */    public static String algorismToHEXString(int algorism, int maxLength) {        String result = "";        result = Integer.toHexString(algorism);        if (result.length() % 2 == 1) {            result = "0" + result;        }        return patchHexString(result.toUpperCase(), maxLength);    }    /**     * 字节数组转为普通字符串(ASCII对应的字符)     *      * @param bytearray     *            byte[]     * @return String     */    public static String bytetoString(byte[] bytearray) {        String result = "";        char temp;        int length = bytearray.length;        for (int i = 0; i < length; i++) {            temp = (char) bytearray[i];            result += temp;        }        return result;    }    /**     * 二进制字符串转十进制     *      * @param binary     *            二进制字符串     * @return 十进制数值     */    public static int binaryToAlgorism(String binary) {        int max = binary.length();        int result = 0;        for (int i = max; i > 0; i--) {            char c = binary.charAt(i - 1);            int algorism = c - '0';            result += Math.pow(2, max - i) * algorism;        }        return result;    }    /**     * 十进制转换为十六进制字符串     *      * @param algorism     *            int 十进制的数字     * @return String 对应的十六进制字符串     */    public static String algorismToHEXString(int algorism) {        String result = "";        result = Integer.toHexString(algorism);        if (result.length() % 2 == 1) {            result = "0" + result;        }        result = result.toUpperCase();        return result;    }    /**     * HEX字符串前补0,主要用于长度位数不足。     *      * @param str     *            String 需要补充长度的十六进制字符串     * @param maxLength     *            int 补充后十六进制字符串的长度     * @return 补充结果     */    static public String patchHexString(String str, int maxLength) {        String temp = "";        for (int i = 0; i < maxLength - str.length(); i++) {            temp = "0" + temp;        }        str = (temp + str).substring(0, maxLength);        return str;    }    /**     * 将一个字符串转换为int     *      * @param s     *            String 要转换的字符串     * @param defaultInt     *            int 如果出现异常,默认返回的数字     * @param radix     *            int 要转换的字符串是什么进制的,如16 8 10.     * @return int 转换后的数字     */    public static int parseToInt(String s, int defaultInt, int radix) {        int i = 0;        try {            i = Integer.parseInt(s, radix);        } catch (NumberFormatException ex) {            i = defaultInt;        }        return i;    }    /**     * 将一个十进制形式的数字字符串转换为int     *      * @param s     *            String 要转换的字符串     * @param defaultInt     *            int 如果出现异常,默认返回的数字     * @return int 转换后的数字     */    public static int parseToInt(String s, int defaultInt) {        int i = 0;        try {            i = Integer.parseInt(s);        } catch (NumberFormatException ex) {            i = defaultInt;        }        return i;    }    /**     * 十六进制字符串转为Byte数组,每两个十六进制字符转为一个Byte     *      * @param hex     *            十六进制字符串     * @return byte 转换结果     */    public static byte[] hexStringToByte(String hex) {        int max = hex.length() / 2;        byte[] bytes = new byte[max];        String binarys = DigitalTrans.hexStringToBinary(hex);        for (int i = 0; i < max; i++) {            bytes[i] = (byte) DigitalTrans.binaryToAlgorism(binarys.substring(                    i * 8 + 1, (i + 1) * 8));            if (binarys.charAt(8 * i) == '1') {                bytes[i] = (byte) (0 - bytes[i]);            }        }        return bytes;    }    /**     * 十六进制串转化为byte数组     *      * @return the array of byte     */    public static final byte[] hex2byte(String hex)            throws IllegalArgumentException {        if (hex.length() % 2 != 0) {            throw new IllegalArgumentException();        }        char[] arr = hex.toCharArray();        byte[] b = new byte[hex.length() / 2];        for (int i = 0, j = 0, l = hex.length(); i < l; i++, j++) {            String swap = "" + arr[i++] + arr[i];            int byteint = Integer.parseInt(swap, 16) & 0xFF;            b[j] = new Integer(byteint).byteValue();        }        return b;    }    /**     * 字节数组转换为十六进制字符串     *      * @param b     *            byte[] 需要转换的字节数组     * @return String 十六进制字符串     */    public static final String byte2hex(byte b[]) {        if (b == null) {            throw new IllegalArgumentException(                    "Argument b ( byte array ) is null! ");        }        String hs = "";        String stmp = "";        for (int n = 0; n < b.length; n++) {            stmp = Integer.toHexString(b[n] & 0xff);            if (stmp.length() == 1) {                hs = hs + "0" + stmp;            } else {                hs = hs + stmp;            }        }        return hs.toUpperCase();    }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机不支持exfat格式怎么办 windows7图标变大了怎么办 igs格式烂曲面怎么办 手机桌面文件夹打不开怎么办 苹果下载不了150怎么办 iphone6速度变慢怎么办 苹果手机微信打不开pdf怎么办 苹果手机打不开pdf怎么办 pdf文件超过了怎么办 pdf电脑删不了怎么办 联想笔记本摄像头横屏调竖屏怎么办 pdf文件打开失败怎么办 pdf复制文字乱码怎么办 电子发票乱码了怎么办 超星尔雅挂了怎么办 电脑应用双击打不开怎么办 电脑控制面板打不开怎么办 转换器无法打开文件怎么办 电脑文件无法打开怎么办 手机上jpg打不开怎么办 脸上全是黄褐斑怎么办 容易发胖的体质怎么办 感冒后一直咳嗽怎么办 感冒咳嗽怎么办小窍门 到了减肥平台期怎么办 减肥遇见平台期怎么办 脚冻伤了痒怎么办 冬天脚后跟冻了怎么办 夏天脚冻了怎么办 导航软件删了怎么办 婆婆爱打孩子怎么办 乙肝婆婆带孩子怎么办 婆婆不会教孩子怎么办 婆婆不会带孩子怎么办 公婆枪带孩子怎么办 婆婆要带孩子怎么办 婆婆太惯孩子怎么办 三个月宝宝溢奶怎么办 孩子半夜咳嗽吐怎么办 中老年人转氨酶和血指高怎么办 孩子逆反心强怎么办