• 进制之间换算


    1、16进制字符串转换成10进制

    long int str_dec(uchar s[])

    {    
    uchar i,m,n; 
    long int temp=0;   
    m=4;             //十六进制是按字符串传进来的,所以要获得它的长度
    for(i=0;i<m;i++)    
    {        
    if(s[i]>='A'&&s[i]<='F')   //十六进制要判断他是不是在 A~F 或者 a~f 之间   , a=10
    n=s[i]-'A'+10;        
    else if(s[i]>='a'&&s[i]<='f')         
    n=s[i]-'a'+10;         
    else n=s[i]-'0';        
    temp=temp*16+n;    
      }    
      return temp;

    }


    //将字符串s转化为相应的10进制整数
    long int StrToDec(long int dec, uchar *str) 

        uchar *tmp=str; 
        dec=0; 
        while (*tmp) dec=dec*10+(*tmp++&15); 
        return dec; 
    }


    2、10进制数转换成字符串


    void Int_char(long int datas)   
    {
      if(datas/1000000)
      {
        Result[0]=datas/1000000+'0';
        Result[1]=datas%1000000/100000+'0';
        Result[2]=datas%100000/10000+'0';
        Result[3]=datas%10000/1000+'0';
        Result[4]=datas%1000/100+'0';
    Result[5]=datas%100/10+'0';
    Result[6]=datas%10+'0';
    Result[7]='';
      }
      else if(datas/100000)
      {
        Result[0]=datas/100000+'0';
        Result[1]=datas%100000/10000+'0';
        Result[2]=datas%10000/1000+'0';
        Result[3]=datas%1000/100+'0';
        Result[4]=datas%100/10+'0';
    Result[5]=datas%10+'0';;
    Result[6]='';
    Result[7]=0;
      }
      else if(datas/10000)
      {
        Result[0]=datas/10000+'0';
        Result[1]=datas%10000/1000+'0';
        Result[2]=datas%1000/100+'0';
        Result[3]=datas%100/10+'0';
        Result[4]=datas%10+'0';
    Result[5]='';
    Result[6]=0;
    Result[7]=0;
      }
      else if(datas/1000)
      {
        Result[0]=datas/1000+'0';
        Result[1]=datas%1000/100+'0';
        Result[2]=datas%100/10+'0';
        Result[3]=datas%10+'0';
        Result[4]='';
    Result[5]=0;
    Result[6]=0;
    Result[7]=0;
      }
       else if(datas/100)
      {
        Result[0]=datas/100+'0';
        Result[1]=datas%100/10+'0';
        Result[2]=datas%10+'0';
        Result[3]='';
        Result[4]=0;
    Result[5]=0;
    Result[6]=0;
    Result[7]=0;
      }
       else if(datas/10)
      {
        Result[0]=datas/10+'0';
        Result[1]=datas%10+'0';
        Result[2]='';
        Result[3]=0;
        Result[4]=0;
    Result[5]=0;
    Result[6]=0;
    Result[7]=0;
      }
      else
      {
        Result[0]=datas%10+'0';
        Result[1]='';
        Result[2]=0;
        Result[3]=0;
        Result[4]=0;
    Result[5]=0;
    Result[6]=0;
    Result[7]=0;
      }

    }



    3、字符串转换成16进制

    //string to hex

    unsigned int str_hex(unsigned char*str,unsigned char *hex)

    {

           unsigned char ctmp, ctmp1,half;

           unsigned int num=0;

           do{

                    do{

                            half = 0;

                            ctmp = *str;

                            if(!ctmp) break;

                            str++;

                    }while((ctmp == 0x20)||(ctmp ==0x2c)||(ctmp == ' '));

                    if(!ctmp) break;

                    if(ctmp>='a') ctmp = ctmp-'a' + 10;

                    else if(ctmp>='A') ctmp = ctmp -'A'+ 10;

                    else ctmp=ctmp-'0';

                    ctmp=ctmp<<4;

                    half = 1;

                    ctmp1 = *str;

                    if(!ctmp1) break;

                    str++;

                    if((ctmp1 == 0x20)||(ctmp1 ==0x2c)||(ctmp1 == ' '))

                    {

                            ctmp = ctmp>>4;

                            ctmp1 = 0;

                    }

                      else if(ctmp1>='a') ctmp1 =ctmp1 - 'a' + 10;

                    else if(ctmp1>='A') ctmp1 = ctmp1 - 'A' + 10;

                    else ctmp1 = ctmp1 - '0';

                    ctmp += ctmp1;

                    *hex = ctmp;

                    hex++;

                    num++;

            }while(1);

            if(half)

            {

                    ctmp = ctmp>>4;

                    *hex = ctmp;

                    num++;

            }

            return(num);

    }



    void StringToHex(uchar* hex, uchar* str) //16进制字符串转换为16进制字节数组,要求字符串偶数个
    {
    int len = strlen(str);
    int tmp,i;
    for (i = 0; i < len / 2; i++)
    {
    if (str[2*i] >= '0' && str[2*i] <= '9')
    {
    tmp = ((str[2*i] - '0') << 4);
    }
    else if (str[2*i] >= 'A' && str[2*i] <= 'F')
    {
    tmp = (((str[2*i] - 'A') + 10) << 4);
    }
    else if (str[2*i] >= 'a' && str[2*i] <= 'f')
    {
    tmp = (((str[2*i] - 'a') + 10) << 4);
    }


    if (str[2*i+1] >= '0' && str[2*i+1] <= '9')
    {
    hex[i] = tmp + (str[2*i+1] - '0');
    }
    else if (str[2*i+1] >= 'A' && str[2*i+1] <= 'F')
    {
    hex[i] = tmp + (str[2*i+1] - 'A') + 10;
    }
    else if (str[2*i+1] >= 'a' && str[2*i+1] <= 'f')
    {
    hex[i] = tmp  + (str[2*i+1] - 'a') + 10;
    }
    }
    }

    4、16进制转换成字符串

    //hex to string

    void hex_str(unsigned char *inchar,unsigned int len, unsigned char *outtxt)

    {

           unsigned char hbit,lbit;

           unsigned int i;

         for(i=0;i<len;i++)

          {

           hbit = (*(inchar+i)&0xf0)>>4;

             lbit = *(inchar+i)&0x0f;

           if (hbit>9) outtxt[2*i]='A'+hbit-10;

              else outtxt[2*i]='0'+hbit;

           if (lbit>9) outtxt[2*i+1]='A'+lbit-10;

              else   outtxt[2*i+1]='0'+lbit;

        }

          outtxt[2*i]= 0;

    }

    转载请注明出处 : http://blog.csdn.net/qq_26093511/article/details/51356053


  • 相关阅读:
    前后端分离的思想
    原生js瀑布流
    瀑布流懒加载
    js的垃圾回收机制
    TCP三次挥手四次握手
    HTTP与HTTPS的区别
    http报文
    前后端的分离
    express中间件
    vue生命周期钩子函数解读步骤
  • 原文地址:https://www.cnblogs.com/alan666/p/8312315.html
Copyright © 2020-2023  润新知