精华内容
下载资源
问答
  • 二进制化为十进制 1001 1010 = 1*2^7+0*2^6+0*2^5+1*2^4+1*2^3+0*2^2+1*2^1+0*2^0 二进制化为十六进制 0011 1101 1011 = 3db 二进制化为八进制 1010 1100 = 010 101 100 =...

    二进制化为十进制                 1001 1010  = 1*2^7+0*2^6+0*2^5+1*2^4+1*2^3+0*2^2+1*2^1+0*2^0 

    二进制化为十六进制              0011   1101  1011 =  3db    

    二进制化为八进制                 1010  1100   =   010   101  100  =  254 

     

    十进制化为二进制      

    2^0 = 1,2^1 = 2 ,2^2 = 4,2^3 = 8,2^4 = 16,2^5 = 32,2^6 = 64 ,2^7 = 128,2^8 = 256,2^9 = 512,2^10 = 1024 ;

    254 =  128 + 64 + 32  + 16 + 8 +4 +2

           = 2^7 + 2^6 + 2^5 + 2^4 + 2^3 +2^2+ 2^1 

    = 1111  1110    

    八进制化为二进制                 efa9  =   1110   1111  1010   1001                                

    十六进制化为二进制             456 =   100  101  110 =   1  0010   1110

     

    八进制转化为十进制             123 =  1*8^2 + 2*8^1+3*8^0 = 64+16+3 = 83 ;

     

    十进制转化为八进制              

    8^0 = 1,8^1 = 8,8^2 = 64,8^3 = 512 ;

    543 =   512 + 24 + 7 = 1*8^3 + 3*8^1 + 7*8^0 = 1037

    十进制转化为十六进制       

    16^0 = 1,16^1 = 16 ,16^2 = 256,16^3 = 4096 ;

    314 =  1*16^2  + 3*16^1 + 10 *16^0 =  13a ;

     

    十六进制转化为十进制         9a = 9 *16^1 +10*16^0 = 144 + 10 = 154 ;

    转载于:https://www.cnblogs.com/chebaodaren/p/5264798.html

    展开全文
  • 进制转换C++代码#include#include#include#includeusing namespace std;void MainMenu(){system("cls");for(int i=0;i<24;i++) cout<printf("\n1. 10->2\n2. 2->10\n3. 16->2\n4. 2->16\n5. 10-&...

    进制转换C++代码

    #include

    #include

    #include

    #include

    using namespace std;

    void MainMenu()

    {

    system("cls");

    for(int i=0;i<24;i++) cout<

    printf("\n1. 10->2\n2. 2->10\n3. 16->2\n4. 2->16\n5. 10->16\n6. 16->10\n7. Exit\n");

    for(i=0;i<24;i++) cout<

    }

    void mission1()

    {system("cls");

    double x,bb;

    int i,aa,n,m,p[100],q[100];

    cout<

    cin>>x;

    aa=(int)x;

    if(x-aa==0)

    {i=0;

    while(aa){

    p[i]=(int)(aa%2);

    aa=aa/2;

    i++;

    }

    cout<

    n=i;

    for(i=n-1;i>=0;i--) cout<

    cout<

    }

    else

    {bb=x-aa;

    i=0;

    while(aa)

    {p[i]=(int)(aa%2);

    aa=aa/2;

    i++;

    }

    n=i;

    i=0;

    while(bb)

    {q[i]=(int)(bb*2);

    bb=bb*2-q[i];

    i++;

    }

    m=i;

    cout<

    for(i=n-1;i>=0;i--) cout<

    cout<

    for(i=0;i

    cout<

    }

    }

    void mission2()

    {system("cls");

    int i,j,n;

    double k,sum=0;

    string str;

    cout<

    cin>>str;

    i=0;

    while(i

    n=i;

    //cout<

    if(n==str.size())

    {j=1;

    for(i=n-1;i>=0;i--)

    { sum+=(str[i]-'0')*j;

    j*=2;

    }

    cout<

    }

    else if(n

    {j=1;

    for(i=n-1;i>=0;i--)

    {sum+=(str[i]-'0')*j;

    j*=2;

    }

    k=1.0/2;

    for(i=n+1;i

    {sum+=(str[i]-'0')*k;

    k*=1.0/2;

    }

    cout<

    }

    }

    void A1(char c)

    {if(c=='0') cout<

    else if(c=='1') cout<

    else if(c=='2') cout<

    else if(c=='3') cout<

    else if(c=='4') cout<

    else if(c=='5') cout<

    else if(c=='6') cout<

    else if(c=='7') cout<

    else if(c=='8') cout<

    else if(c=='9') cout<

    else if(c=='A') cout<

    else if(c=='B') cout<

    else if(c=='C') cout<

    else if(c=='D') cout<

    else if(c=='E') cout<

    else if(c=='F') cout<

    else cout<

    }

    void A(string s)

    {int i,m,n;

    n=s.length();

    i=0;

    while(i

    m=i;

    for(i=0;i

    A1(s[i]);

    if(m

    {cout<

    for(i=m+1;i

    A1(s[i]);

    }

    cout<

    }

    void mission3()

    {system("cls");

    string str;

    cout<

    cin>>str;

    cout<

    A(str);

    }

    char B2(string s)

    {char ret;

    if(s=="0000") ret='0';

    else if(s=="0001") ret='1';

    else if(s=="0010") ret='2';

    else if(s=="0011") ret='3';

    else if(s=="0100") ret='4';

    else if(s=="0101") ret='5';

    else if(s=="0110") ret='6';

    else if(s=="0111") ret='7';

    else if(s=="1000") ret='8';

    else if(s=="1001") ret='9';

    else if(s=="1010") ret='A';

    els

    e if(s=="1011") ret='B';

    else if(s=="1100") ret='C';

    else if(s=="1101") ret='D';

    else if(s=="1110"

    展开全文
  • 不,没有这样的格式化选项,但您可以执行以下操作:io:format("<>~n", [[io_lib:format("~2.16.0B",[X]) || <> <= <<255,16>> ]]).如果您需要,有更快的解决方案 .-module(bin_to_hex).-...

    不,没有这样的格式化选项,但您可以执行以下操作:

    io:format("<>~n", [[io_lib:format("~2.16.0B",[X]) || <<8>> <= <<255,16>> ]]).8>

    如果您需要,有更快的解决方案 .

    -module(bin_to_hex).

    -compile([native, {hipe, [o3]}]).

    -export([bin_to_hex/1]).

    bin_to_hex(B) when is_binary(B) ->

    bin_to_hex(B, <<>>).

    -define(H(X), (hex(X)):16).

    bin_to_hex(<<>>, Acc) -> Acc;

    bin_to_hex(Bin, Acc) when byte_size(Bin) band 7 =:= 0 ->

    bin_to_hex_(Bin, Acc);

    bin_to_hex(<<8 rest>>, Acc) ->8>

    bin_to_hex(Rest, <>).

    bin_to_hex_(<<>>, Acc) -> Acc;

    bin_to_hex_(<<8 b:8 c:8 d:8 e:8 f:8 g:8 h:8 rest>>, Acc) ->8>

    bin_to_hex_(

    Rest,

    <

    ?H(A), ?H(B), ?H(C), ?H(D), ?H(E), ?H(F), ?H(G), ?H(H)>>).

    -compile({inline, [hex/1]}).

    hex(X) ->

    element(

    X+1, {16#3030, 16#3031, 16#3032, 16#3033, 16#3034, 16#3035, 16#3036,

    16#3037, 16#3038, 16#3039, 16#3041, 16#3042, 16#3043, 16#3044,

    16#3045, 16#3046, 16#3130, 16#3131, 16#3132, 16#3133, 16#3134,

    16#3135, 16#3136, 16#3137, 16#3138, 16#3139, 16#3141, 16#3142,

    16#3143, 16#3144, 16#3145, 16#3146, 16#3230, 16#3231, 16#3232,

    16#3233, 16#3234, 16#3235, 16#3236, 16#3237, 16#3238, 16#3239,

    16#3241, 16#3242, 16#3243, 16#3244, 16#3245, 16#3246, 16#3330,

    16#3331, 16#3332, 16#3333, 16#3334, 16#3335, 16#3336, 16#3337,

    16#3338, 16#3339, 16#3341, 16#3342, 16#3343, 16#3344, 16#3345,

    16#3346, 16#3430, 16#3431, 16#3432, 16#3433, 16#3434, 16#3435,

    16#3436, 16#3437, 16#3438, 16#3439, 16#3441, 16#3442, 16#3443,

    16#3444, 16#3445, 16#3446, 16#3530, 16#3531, 16#3532, 16#3533,

    16#3534, 16#3535, 16#3536, 16#3537, 16#3538, 16#3539, 16#3541,

    16#3542, 16#3543, 16#3544, 16#3545, 16#3546, 16#3630, 16#3631,

    16#3632, 16#3633, 16#3634, 16#3635, 16#3636, 16#3637, 16#3638,

    16#3639, 16#3641, 16#3642, 16#3643, 16#3644, 16#3645, 16#3646,

    16#3730, 16#3731, 16#3732, 16#3733, 16#3734, 16#3735, 16#3736,

    16#3737, 16#3738, 16#3739, 16#3741, 16#3742, 16#3743, 16#3744,

    16#3745, 16#3746, 16#3830, 16#3831, 16#3832, 16#3833, 16#3834,

    16#3835, 16#3836, 16#3837, 16#3838, 16#3839, 16#3841, 16#3842,

    16#3843, 16#3844, 16#3845, 16#3846, 16#3930, 16#3931, 16#3932,

    16#3933, 16#3934, 16#3935, 16#3936, 16#3937, 16#3938, 16#3939,

    16#3941, 16#3942, 16#3943, 16#3944, 16#3945, 16#3946, 16#4130,

    16#4131, 16#4132, 16#4133, 16#4134, 16#4135, 16#4136, 16#4137,

    16#4138, 16#4139, 16#4141, 16#4142, 16#4143, 16#4144, 16#4145,

    16#4146, 16#4230, 16#4231, 16#4232, 16#4233, 16#4234, 16#4235,

    16#4236, 16#4237, 16#4238, 16#4239, 16#4241, 16#4242, 16#4243,

    16#4244, 16#4245, 16#4246, 16#4330, 16#4331, 16#4332, 16#4333,

    16#4334, 16#4335, 16#4336, 16#4337, 16#4338, 16#4339, 16#4341,

    16#4342, 16#4343, 16#4344, 16#4345, 16#4346, 16#4430, 16#4431,

    16#4432, 16#4433, 16#4434, 16#4435, 16#4436, 16#4437, 16#4438,

    16#4439, 16#4441, 16#4442, 16#4443, 16#4444, 16#4445, 16#4446,

    16#4530, 16#4531, 16#4532, 16#4533, 16#4534, 16#4535, 16#4536,

    16#4537, 16#4538, 16#4539, 16#4541, 16#4542, 16#4543, 16#4544,

    16#4545, 16#4546, 16#4630, 16#4631, 16#4632, 16#4633, 16#4634,

    16#4635, 16#4636, 16#4637, 16#4638, 16#4639, 16#4641, 16#4642,

    16#4643, 16#4644, 16#4645, 16#4646}).

    当在10MB块上测试时,在我的笔记本i5 CPU M 520 @ 2.40GHz上执行90MB / s . 但优化在那里被带到了极致 . 如果使用16位查找它也可以做97MB,但它很疯狂,太长了,无法发布在这里 .

    展开全文
  • (一)十进制化为二进制: package test; public class test { public static void main(String[] args) { tobin(6); } //十进制转化为二进制 public static void tobin(int num) { StringBuffer ab=new ...

    对StringBuffer的使用说明:

    package test;
    
    public class test {
    	    public static void main(String[] args) {
    	        StringBuffer sb = new StringBuffer();//StringBuilder sb=new StringBuilder();具有同种功效
    	        int len = sb.length();
    	        System.out.println(len);//长度是0
    	        sb.append("hello");//添加字符串进去
    	        System.out.println("sb:" + sb);
    	         
    	        StringBuffer sb1 = new StringBuffer("world");//构造的时候,就添加字符串
    	        System.out.println("sb1:" + sb1);
    	 
    	    }
    }
    
    控制台输出结果:
    0
    sb:hello
    sb1:world
    


    (一)十进制化为二进制:

    package test;
    
    public class test {
    	public static void main(String[] args)
    	{
    		tobin(6);
    	}
    	//十进制转化为二进制
    	public static void tobin(int num)
    	{
    		StringBuffer ab=new StringBuffer();
    		while(num>0)
    		{
    			System.out.println(num%2);
    			num=num/2;
    		}
    		System.out.println(ab.reverse());
    	}
    }
    
    
    控制台输出结果:
    0
    1
    1
    
    

    (二)十进制转化为十六进制:

    先将十进制转化为二进制,然后再将二进制转化为十六进制:比防说60转化为十六进制是3C,60的二进制是:

    实际上,&与操作是做了一种单位求余的操作,且将余数的可能缩小在了不会超过单位最大值的范围之内

    0000-0000    0000-0000   0000-0000  0011-1100

    0000-0000    0000-0000   0000-0000  0000-1111

    上面两个进行与“&“运算:

    0000-0000    0000-0000   0000-0000   0000-1111


    package test;
    
    public class test {
    	public static void main(String[] args)
    	{
    		tohex(60);
    	}
    	//十进制转化为十六进制
    	//第一种:
    	public static void tohex(int num)
    	{
    		StringBuffer sb=new StringBuffer();
    		for(int x=0;x<6;x++)
    		{
    			int temp=num&15;
    			if(temp>9)
    			sb.append((char)(temp-10+'A'));
    			else
    				sb.append(temp);
    			num=num>>>4;//右移四位
    		}
    		System.out.println(sb.reverse());
    	}
    	/*控制台输出结果:
    	 * 00003C
    	 */
    	
    	
    	
    	//第二种:
    	/*public static void tohex(int num)
    	{
    		StringBuffer sb=new StringBuffer();
    		for(int x=0;x<6;x++)
    		{
    			int temp=num&15;
    			if(temp>9)
    			System.out.println((char)(temp-10+'A'));
    			else
    				System.out.println(temp);
    			num=num>>>4;
    		}
    	}
    	
    	C
    	3
    	0
    	0
    	0
    	0
        */
    }
    
    
    

    (三)查表法十进制十六进制:

    package test;
    
    public class test {
    	
    	/*0 1 2 3 4 5 6 7 8 9 A   B   C   D   E   F   ==十六进制中的元素 
    	 *0 1 2 3 4 5 6 7 8 9 10  11  12  13  14  15
    	 * 
    	 * 查表法:将所有元素临时存储起来,建立对应关系
    	 * 每一次&15后的之作为索引去查建立好的表,就可以找到对应的元素
    	 * 这样比-10+‘a’简单的多
    	 * 这个表怎么建立呢?
    	 * 可以通过数据的形式来定义
    	 */
    	public  static void main(String [] args)
    	{
    		
    		tohex(60);
    	}
    	
    	public static void tohex(int num)
    	{
    		char[] sh={'0','1','2','3',
    				   '4','5','6','7',
    				   '8','9','A','B',
    				   'C','D','E','F'};
    		for(int x=0;x<8;x++)
    		{
    			int temp=num&15;
    			System.out.println(sh[temp]);
    			num=num>>>4;
    		}
    	}
    }
    
    
    控制台输出结果:
    C
    3
    0
    0
    0
    0
    0
    0
    

    package test;
    
    public class test {
    	
    	/*0 1 2 3 4 5 6 7 8 9 A   B   C   D   E   F   ==十六进制中的元素 
    	 *0 1 2 3 4 5 6 7 8 9 10  11  12  13  14  15
    	 * 
    	 * 查表法:将所有元素临时存储起来,建立对应关系
    	 * 每一次&15后的之作为索引去查建立好的表,就可以找到对应的元素
    	 * 这样比-10+‘a’简单的多
    	 * 这个表怎么建立呢?
    	 * 可以通过数据的形式来定义
    	 */
    	public  static void main(String [] args)
    	{
    		tohex(60);
    	}
    	public static void tohex(int num)
    	{
    		char[] sh={'0','1','2','3',
    				   '4','5','6','7',
    				   '8','9','A','B',
    				   'C','D','E','F'};
    		//定义一个临时容器
    		char[] arr=new char[8];//'\u0000'
    		int post=0;
    		while(num!=0)
    		{
    			int temp=num&15;
    			
    			arr[post++]=sh[temp];
    			num=num>>>4;
    		}
    		//存储数据的数组遍历
    		for(int x=post-1;x>=0;x--)
    		{
    			System.out.print(arr[x]+",");
    		}
    	}
    	
    	//控制台输出结果:3,C,
    	
    	/*
    	 * public static void tohex(int num)
    	{
    		char[] sh={'0','1','2','3',
    				   '4','5','6','7',
    				   '8','9','A','B',
    				   'C','D','E','F'};
    		//定义一个临时容器
    		char[] arr=new char[8];
    		for(int x=0;x<8;x++)
    		{
    			int temp=num&15;
    			
    			arr[x]=sh[temp];
    			num=num>>>4;
    		}
    		//存储数据的数组遍历
    		for(int x=arr.length-1;x>=0;x--)
    		{
    			System.out.print(arr[x]+",");
    		}
    	}
    	
    	//0,0,0,0,0,0,3,C,
    	 */
    }
    
    package test;
    
    public class test {
    	public  static void main(String [] args)
    	{
    		tohex(60);
    	}
    	public static void tohex(int num)
    	{
    		char[] sh={'0','1','2','3',
    				   '4','5','6','7',
    				   '8','9','A','B',
    				   'C','D','E','F'};
    		//定义一个临时容器
    		char[] arr=new char[8];//'\u0000'
    		int post=arr.length;
    		while(num!=0)
    		{
    			int temp=num&15;
    			
    			arr[--post]=sh[temp];
    			num=num>>>4;
    		}
    		//存储数据的数组遍历
    		System.out.println("post="+post);
    		for(int x=post;x<arr.length;x++)
    		{
    			System.out.print(arr[x]+",");
    		}
    	}
    }
    控制台输出结果:
    post=6
    3,C,


    (查表法十进制转化为二进制):

    package test;  
      
    public class test {  
    	public static void main(String[] args)
    	{
    		fun(6);
    	}
    	
    	public static void fun(int num)
    	{
    		char[] a={'0','1'};
    		char[] arr=new char[32];
    		int post=arr.length;
    		while(num!=0)
    		{
    			int temp=num&1;
    			arr[--post]=a[temp];
    			num=num>>>1;
    		}
    		for(int x=post;x<arr.length;x++)
    		{
    			System.out.print(arr[x]);
    		}
    	}
    }  
    控制台输出结果:
    110



    展开全文
  • 学计算机的朋友刚开始学习时都要接触进制之间的转换,二进制、十进制、八进制、十六进制等,这个是很枯燥的,转来转去就转蒙圈了,别蒙别蒙,今天咱们一个一个搞定,看看二进制和十进制之间如何相互转换的。 转成...
  • 代码转载于... ... 十六进制化为八进制先用1化4方法,将十六进制化为二进制;再用3并1方法,将二进制化为8制。 十六进制化为八进制 先用1化4方法,将十六进制化为二进制;再用3并1方法,...
  • 问题分析掌握不同数制间的转换关系是解决问题的关键,这里所说的数制一般包括二进制、八进制、十六进制及十进制。除了不同的数制还有下面几个必须要了解的概念。基数:在一种数制中,只能使用一组固定的数字来表示数...
  • 展开全部1、八进制化为32313133353236313431303231363533e78988e69d8331333366306436十进制:例:将八进制数12转换成十进制数 2、八...例: (17.36)8 = (001 111 .011 110)2 = (1111.01111)23、八进制化为十六进制先...
  • 十六进制的写法

    千次阅读 2016-09-14 16:13:50
    做题目的时候,用到273化为16进制数,脑子一下有点蒙,虽然...纠结了很久才明白,自己理解错误的原因在于:没能理解这三个1,每个1各占一个4位二进制。 即:0001 0001 0001 不是我想象的0001 0011.细节真的超级重要!
  • 1.使用Java带有的方法Integer,最简单粗暴了,代码如下//使用java提供的方法//但仅局限于比较常用的二进制、八进制、十六进制public static String trans1(int num, int radix){if(radix == 2)return Integer....
  • 十六进制转十进制(C语言实现)

    千次阅读 2018-01-29 14:40:17
    首先,了解如何将字符串转化为十进制数: ...3、将前一个计算出的十进制数(初始化为0)乘以10加上第步计算出的数字。 4、循环1-3步直到读取完数组内所有内容。 之所以这样算需要举个例子:比如数组内...
  • ASCII及十六进制转换工具《建》

    热门讨论 2010-09-11 10:39:41
    (2)将二进制形式的IP地址与子网掩码做“与”运算,将答案化为十进制便得到网络地址; (3)将二进制形式的子网掩码取“反”; (4)将取“反”后的子网掩码与IP地址做“与”运算,将答案化为十进制便得到主机地址...
  • 题目描述 给定一个整数,编写一个算法将这个数转换为十六...不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。 思路 二进制转换为16进制,也就是每 4 位合成一位。 于是,我们可以从低位存储到高位,
  • DGN进制转换器

    2012-04-18 22:22:17
    本代码通过C/C++学习系统编译。...可进行二进制,十进制,十六进制之间相互转化。同时它们也可以转换成八进制与三十二进制。代码中将各种进制统一化。均化为二进制并以四位十进制形式储存方便处理与添加功能。
  • Java 3种方法实现进制转换,数组,余数,方法,详细内容,相关文章Java 3种方法...1.使用Java带有的方法Integer,最简单粗暴了,代码如下//使用java提供的方法//但仅局限于比较常用的二进制、八进制、十六进制public stat...
  • 1.使用Java带有的方法Integer,最简单粗暴了,代码如下//使用java提供的方法//但仅局限于比较常用的二进制、八进制、十六进制public static String trans1(int num, int radix){if(radix == 2)return Integer....
  • 1.使用Java带有的方法Integer,最简单粗暴了,代码如下//使用java提供的方法//但仅局限于比较常用的二进制、八进制、十六进制public static String trans1(int num, int radix){if(radix == 2)return Integer....
  • 展开全部1的个数用十进32313133353236313431303231363533e58685e5aeb931333262343037制表示的,程序如下:...保存转换后的余数,初始化为30h,余;数直接加到对应单元,转化为ascii码dataendscodesegmentassumecs:cod...
  • 对于那些经常用报文的人很有用的一个工具,包含了异或,累加,十六进制二进制,格式化为0x,计算报文长度,十六进制转十进制,十六进制转汉字 ,BIN文件转成可以复制 的, 可复制的转在BIN文件等一系列转化
  • 上面的两个函数是将二进制流转化为16进制,data的每一个比特都被转为对应十六进制的2位,因此返回结果是data长度的二倍。 下面的两个函数意思是将十六进制串转为二进制流,其中十六进制串长度必须是偶数,否则返回...
  • 分别有二进制、八进制、十进制、十六进制。 我们先将把化为二进制的形式 十进制转二进制 我们通常用短除法来解决这类问题,因为二进制是逢二进一的所以用十进制的数短除二求每一步的余数,方法就是除2取余,逆序...
  • 由其他进制转换为十进制... //但仅局限于比较常用的二进制、八进制、十六进制 public static String trans1(int num, int radix) { if(radix == 2) return Integer.toBinaryString(num); else if(radix == 8) r
  • 由其他进制转换为十进制比较简单,下面着重谈一谈十进制如何化为其他进制。... 2 //但仅局限于比较常用的二进制、八进制、十六进制 3 public static String trans1(int num, int radix) 4 { 5 ...
  • 进制之间的转换

    2012-10-23 14:57:00
    对于初学者来说,二、十六进制之间的换算会显得有些繁琐,不过可以以十进制为中介来换算,首先要学会二、十六进制分别与十进制的互化方法:(一)1、转换为十进制 二进制化为十进制 zcv545%#(么K:JFD()$#_*本文来自...
  • 可电脑并不会识别二进制,必须化为十六进制。例如,1111 1101 对应的十六进制是多少?如果用手算,能算出来,但很麻烦。这是就要借用外力——计算机了.windows 10的计算机没有中文显示,所以可能会给一部分带来麻烦...
  • 进制二进制:0~1,满二进一,以0b开头作为标识八进制:0~7,满八进一,以0作为标识十进制:0~9,慢10进一,十六进制:0~9,A~F,满十六进一,以0x开头作为标识,F+1=0x10进制之间的转换十进制转换成二进制:不断除以...
  • 进制间的计算

    2011-05-12 16:49:00
    二进制中: 2个数进行减法运算时: 8-2 = 6 (8是被减数,2是减数 6是差)...   十六进制中: 当2个数进行运算时,如果最高位为1时(化为二进制时),或者>=8时(十六进制时),则

空空如也

空空如也

1 2 3 4 5
收藏数 82
精华内容 32
关键字:

二进制化为十六进制