今天测试服务端网络协议的时候用到了进制间的转换,在这里再记录下。
1.
二进制转十进制
2进制是用0和1表示的一串指令,
例1:0000 0000 0000 1010 ,那么我们从右边往左数(从0开始),数字0就代表0,数字1就代表2,位于第几位那就是第几次方,那么这个数的10进制是0⁰+2¹+0²+2³=10。
例2:0000 0000 0010 1100,10进制是0⁰+0¹+2²+2³+0⁴+2⁵=44。
2.
二进制转十六进制
16进制转换有16进制每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F16个大小不同的数,即逢16进1,其中用A,B,C,D,E,F(字母使用大写)这六个字母来分别表示10,11,12,13,14,15。
16进制就有16个数,0~15,用2进制表示15的方法就是1111,从而可以推断出,16进制用2进制可以表现成0000~1111,顾名思义,也就是每四个为一位。
例1:00111101可以这样分:
0011|1101,(每4个比特位换算成一个数字,还是从右往作数)左半边=2⁰+2¹=3 右半边=2⁰+0¹+2²+2³=13,也就是对应16进制里的D。所以,00111101就可以换算成16进制的3D。
例2:00100011,转成16进制0⁰+2¹+0²+0³=2、2⁰+2¹+0²+0³=3,那就是23。
3.
十六进制转十进制
16进制数的第0位的为16权值的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方。
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
例1:2AF5换算成10进制(位数从右往左数):
第0位: 5 * 16⁰ = 5,第1位: F * 16¹ = 240,第2位: A * 16²= 2560,第3位: 2 * 16³ = 8192
最后相加等于:10997,也就是 5 * 16⁰+ F * 16¹ + A * 16²+ 2 * 16³= 10997
例2:3C0E转换成16进制
即:E*16⁰+0*16¹ +C*16² +3*16³=14+0+3072+12288=15374
大概先记那么多。
网友评论