间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。这里不再做图片用法解释。直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。
1.二进制转十六进制方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。(具体用法如下图)
2.十六进制转二进制方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。(具体用法如下图)
3.十进制转八进制或者十六进制有两种方法第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。这里不再做图片用法解释。第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。(具体用法如下图)
4.八进制或者十六进制转成十进制方法为:把八进制、十六进制数按权展开、相加即得十进制数。(具体用法如下图)
可以先把16进制的转换成2进制,0F 01就是0000 1111 0000 0001,然后换成10进制就是3841了;16进制换成2进制是基础,一个1位的16进制数为一个4位的2进制数,本身没有什么诀窍,记住就可以了,0H(16进制)=0000(2进制)、1H=0001、2H=0010、3H=0011、4H=0100、5H=0101、6H=0110、7H=0111、8H=1000、9H=1001、A=1010、B=1011、C=1100、D=1101、E=1110、F=1111。
当然你也可以直接转换,公式类似于2进制转10进制一样。即第1位(从右到坐,即从低位开始算)乘以16的0次方+第2位乘以16的1次方+第3位的乘以16的2次方……这样一直这样,加到位结束。如上例就是0F01=1*16的0次方+0乘以的16的1次方+15乘以16的2次方+0乘以16的3次方=1+0+3840+0=3841。
最后给出你例子的答案:0F01=3841;1C01=7169;
你可以利用计算机的科学计算器试试!
貌似是汇编,【17 01】,后面01是高位,前面17是低位。电脑就是这么认它的。咱人看当然要倒过来了。
倒过来转 的意思是这样的,
char num1[] = {0x0f,0x01};
num1 是两个字节,所以转换成short为例,
如果将他转换成 short,
short num;
memcpy(#, num, 2);的结果就是 num = 010f 了
所以只能这样,
if(num1>='0' && num <= '9'){
num = (num1 - '0') << 8;
}else if(num1>='a' && num1 <= 'f'){
num = (num1 - 'a') << 8;
}else if(num1>='A' && num1 <= 'F'){
num = (num1 - 'A') << 8;
}
if(num1>='0' && num <= '9'){
num += (num1 - '0') << 8;
}else if(num1>='a' && num1 <= 'f'){
num += (num1 - 'a') << 8;
}else if(num1>='A' && num1 <= 'F'){
num += (num1 - 'A') << 8;
}
0F 01= 0*16^3+15*16^2+0*16+1=3841
1C 01=1*16^3+12*16^2+0*16+1=7169
标签:进制,转换