十六进制转化为十进制的方法

来源:互联网 发布:游戏服务端 python 编辑:程序博客网 时间:2024/05/16 10:28
十六进制转化为10进制     例 0x12  转化为10 进制        2 * 16^0 + 1 * 16 ^1 十进制转化为16进制        就是用这个数除以16  然后取余           把结果从低到高排序就可以了            16  |23785  余---------9                ------                16 |1486    ------14(E)                     -----                    16|92   -------12(c)                      ----                        16|5   ------5                          ----结果就是 5CE9十进制转化8进制同理    代码实现十进制转化16进制#include <stdio.h>int change( int num ){    if( num / 16 ){        change(num/16);     }    switch(num%16){    case 10: printf("A"); break;    case 11: printf("B"); break;    case 12: printf("C"); break;    case 13: printf("D"); break;    case 14: printf("E"); break;    case 15: printf("F"); break;    default: printf("%d",num%16); break;        }    return 0;}int main( void ){    int num;    printf("input a num\n");    scanf("%d",&num);    change(num);    printf("\n");       return 0;}十六进制转化为十进制 do{        tmp = num % n;        sum = sum + tmp * pow(n,i);        i++;        }while( num=num/n); 这是一种思路 最好的解决办法就是 #include <stdio.h>#include <string.h>#include <math.h>int basechange( unsigned char *src,int n ){                   //这个函数是把每一个字节的位取出来看那一位是不是为1//但是传递过来的不能是字符串,如果是字符串1 就是ascii的49  //这个只能是普通的数字 放在数组中然后解析        int i = 1;        int len = n * 8;        int sum = 0;        for(i=1; i<=len; i++ ){              if( src[(i-1)/8] & (0x80 >> (i-1)%8) ){                  sum = sum + pow(2,len-i );                 printf("%d\n",i);              }        }        printf("%d\n",sum);}int main( void ){        int num = 0;        unsigned char buf[3] = {                0x12,0x34,0x56        };        basechange( buf, 3 );        return 0;}
0 0
原创粉丝点击