16进制转二进制

来源:互联网 发布:gif图分解软件 编辑:程序博客网 时间:2024/06/11 20:40

题目:一个字符串由两个(个位数或A~F)组成,翻译成二进制数组,如"3A"输出"111010","A3"输出"11110011"

package mytest;import java.util.Stack;/** * 题目:一个字符串由两个(个位数或A~F)组成,翻译成二进制数组,如"3A"输出"111010","A3"输出"11110011" * @author ephuizi * 2013/10/16 */public class BinaryTest{    public static void main(String[] args) {System.out.println("2进制3A:" +getBinaryString("3A") );        System.out.println("2进制A3:" +getBinaryString("A3") );    }    /**     * 获取正整数的二进制字符串     * @param n 正整数     * @return 二进制字符串     */    static String intToBinaryString(int n){    String binary ="";    Stack<Integer> stack = new Stack<>();    if(n<0)    return binary;    do{    stack.push(n%2);    n>>=1;    }while(n != 0);        int size =stack.size();    while(size++<4)    binary +=0;        while(stack.size()>0)    binary += stack.pop();    return binary;    }    /**     * 将字符0~9转成对应的整型0~9,A~F转成整型10~15     * @param c 字符     * @return 对应的整型     */    static int charToInt(char c){    char chars[] = "0123456789ABCDEF".toCharArray();    int n = 0;    for(int i=0; i<chars.length ;i++)    if(chars[i]==c) {    n=i;break;    }    return n;    }        /**     * 十六进制字符串转成二进制字符串     * @param s 十六进制字符串     * @return 二进制字符串     */    static String getBinaryString(String s){    char[] chars = s.toCharArray();    s="";    for(int i=0; i<chars.length; i++){    if(i==0)    s+=delTopZero(intToBinaryString(charToInt(chars[i])));    else    s+=intToBinaryString(charToInt(chars[i]));    }    return s;    }    /**     * 去掉二进制字符串头部的零     * @param s 二进制字符串     * @return 去零后的字符串     */    static String delTopZero(String s){    char[] chars = s.toCharArray();    int len = chars.length;    int i = 0;    for(; i<len; i++)    if(chars[i]!='0')    break;    int newLen = len-i;    char[] newChars = new char[newLen];    for(int j=0;j<newLen; j++)    newChars[j] = chars[i];    return new String(newChars);    }}

结果:


原创粉丝点击