`

10进制转换为二进制

阅读更多
public class Tools extends TestCase
{
    /** 10进制转16进制 */
    public static String algorismToHex(String source)
    {
        String binary = algorismToBinary(source);
        int len = binary.length();
        StringBuilder builder = new StringBuilder();
        for (int i = len; i >= 4; i = i - 4)
        {
            builder.append(change(binary.substring(i - 4, i)));
        }
        if (len % 4 != 0)
        {
            builder.append(change(binary.substring(0, len % 4)));
        }
        return builder.append("x0").reverse().toString();
    }
    
    public static void main(String[] args)
    {
        System.out.println(algorismToHex("100"));
        System.out.println(algorismToHex("29063"));
        System.out.println(algorismToHex("29064"));
        System.out.println(algorismToHex("29092"));
    }
    
    public static String change(String s)
    {
        String str = binaryToAlgorism(s);
        if ("10".equals(str))
        {
            return "a";
        }
        else if ("11".equals(str))
        {
            return "b";
        }
        else if ("12".equals(str))
        {
            return "c";
        }
        else if ("13".equals(str))
        {
            return "d";
        }
        else if ("14".equals(str))
        {
            return "e";
        }
        else if ("15".equals(str))
        {
            return "f";
        }
        else
        {
            return str;
        }
    }
    
    /** 十进制转二进制 */
    public static String algorismToBinary(String source)
    {
        Integer in = Integer.valueOf(source);
        StringBuilder builder = new StringBuilder();
        while (in != 0)
        {
            builder.append(in % 2 == 0 ? "0" : "1");
            in = in / 2;
        }
        return builder.reverse().toString();
    }
    
    /** 二进制转十进制 */
    public static String binaryToAlgorism(String binary)
    {
        int count = 0;
        int length = binary.length();
        for (int i = length - 1; i >= 0; i--)
        {
            int num = Integer.valueOf(new String(new char[] {binary.charAt(i)}));
            if (num == 1)
                count += show(length - i - 1);
        }
        return String.valueOf(count);
    }
    
    public void testAlgorismToBinary()
    {
        String str = "7817";
        
        Integer in = Integer.valueOf(str);
        StringBuilder builder = new StringBuilder();
        while (in != 0)
        {
            builder.append(in % 2 == 0 ? "0" : "1");
            in = in / 2;
        }
        String s = builder.reverse().toString();
        int count = 0;
        int length = s.length();
        for (int i = length - 1; i >= 0; i--)
        {
            int num = Integer.valueOf(new String(new char[] {s.charAt(i)}));
            if (num == 1)
                count += show(length - i - 1);
        }
        System.out.println(count);
        assertEquals(str, String.valueOf(count));
    }
    
    public static int show(int i)
    {
        int count = 1;
        for (int k = 0; k < i; k++)
        {
            count = count * 2;
        }
        return count;
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics