⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hex.c

📁 Hex to Decimal Conversion Routines
💻 C
字号:

double hexstr_to_dec(hex)
char hex[];
{
    int count1,count2,count3;
    double y;
    int z[11] = {0,0,0,0,0,0,0,0,0,0};
    double x[11] =
        {
        1,                    /* 0x000000001 times X ( 0 - 15 ) */
        16,                   /* 0x000000010 """"""""""""""""   */
        256,                  /* 0x000000100 """"""""""""""""   */
        4096,                 /* 0x000001000 """"""""""""""""   */
        65536,                /* 0x000010000 """"""""""""""""   */
        1048576,              /* 0x000100000 """"""""""""""""   */
        16777216,             /* 0x001000000 """"""""""""""""   */
        268435456,            /* 0x010000000 """"""""""""""""   */
        4294967296,           /* 0x100000000 """"""""""""""""   */
        };
    y = 0;
    count1 = count2 = count3 = 0;
    while (hex[count1] != '\0')
        count1 ++;
    while (count2 < count1)
        {
        if (hex[count2] >= '0' && hex[count2] <= '9')
            {
            z[count3] = hex[count2] - '0';
            count3++;
            }
        if (hex[count2] >= 'A' && hex[count2] <= 'F')
            {
            z[count3] = hex[count2] - 'A' + 10;
            count3 ++;
            }
        count2++;
        }
    count2 = 0;
    count1 = count3 - 1;
    while ( count2 < count3 )
        {
        y = y + z[count2] * x[count1];
        count1-- ;
        count2++;
        }
    return(y);
}

double binstr_to_dec(bin)
char bin[];
{
    int count1,count2,count3,count4;
    double y;
    double x[20] =
        {
        1,                /* 0000 0000 0000 0001 */
        2,                /* 0000 0000 0000 0010 */
        4,                /* 0000 0000 0000 0100 */
        8,                /* 0000 0000 0000 1000 */

        16,               /* 0000 0000 0001 0000 */
        32,               /* 0000 0000 0010 0000 */
        64,               /* 0000 0000 0100 0000 */
        128,              /* 0000 0000 1000 0000 */

        256,              /* 0000 0001 0000 0000 */
        512,              /* 0000 0010 0000 0000 */
        1024,             /* 0000 0100 0000 0000 */
        2048,             /* 0000 1000 0000 0000 */

        4096,             /* 0001 0000 0000 0000 */
        8192,             /* 0010 0000 0000 0000 */
        16384,            /* 0100 0000 0000 0000 */
        32768,            /* 1000 0000 0000 0000 */
        };
    count1 = count2 = count3 = count4 = 0;
    y = 0;
    while (bin[count4] != '\0')
        {
        if (bin[count4] >= '0' && bin[count4] <= '1')
            count1++;
        count4++;
        }
    count3 = count1 - 1;
    while (count2 < count1)
        {
        if ( bin[count2] == '1' )
            y = y + x[count3];
        count3--;
        count2++;
        }
    return(y);
}

double octstr_to_dec(oct)
char oct[];
{
    int count1,count2,count3;
    double y;
    int z[14] = {0,0,0,0,0,0,0,0,0,0,0};
    double x[14] =
        {
        1,
        8,
        64,
        512,
        4096,
        32768,
        262144,
        2097152,
        16777216,
        134217728,
        1073741824
        };
     count1 = count2 = count3 = 0;
     y = 0;
     while (oct[count1] != '\0')
        count1++;
     while (count2 < count1)
        {
        if (oct[count2] >= '0' && oct[count2] <= '7')
            {
            z[count3] = oct[count2] - '0';
            count3++;
            }
        count2++;
        }
     count2 = 0;
     count1 = count3 - 1;
     while (count2 < count3)
        {
        y = y + z[count2] * x[count1];
        count1 --;
        count2 ++;
        }
     return(y);
}

double decstr_to_dec(dec)
char dec[];
{
    int count1,count2,count3;
    double y;
    int z[12] = {0,0,0,0,0,0,0,0,0,0};
    double x[12] =
        {
        1,
        10,
        100,
        1000,
        10000,
        100000,
        1000000,
        10000000,
        100000000,
        1000000000
        };
    count1 = count2 = count3 = 0;
    y = 0;
    while (dec[count1] != '\0')
        count1++;
    while (count2 < count1)
        {
        if (dec[count2] >= '0' && dec[count2] <= '9')
            {
            z[count3] = dec[count2] - '0';
            count3++;
            }
        count2 ++;
        }
    count2 = 0;
    count1 = count3 - 1;
    while (count2 < count3)
        {
        y = y + z[count2] * x[count1];
        count1--;
        count2++;
        }
    return(y);
}

dec_to_decstr(num,str)
double num;
char str[];
{
    int count1,count2,count3,a;
    char *p;
    double x[12] =
        {
        1,
        10,
        100,
        1000,
        10000,
        100000,
        1000000,
        10000000,
        100000000,
        1000000000,
        };
    count1 = count2 =count3 = 0;
    for (a=0; a <= 9; a++)
       if (num >= x[a])
          {
          count1 = a;
          count3 = a;
          }
    while (count2 <= count1)
        {
        p = &str[count2];
        for (a=0; a <= 9; a++)
            if ( num >= a*x[count3] && num < (a+1)*x[count3])
                {
                *p = a + '0';
                num = num - a*x[count3];
                }
        count3--;
        count2++;
        }
    p = &str[count2];
    *p = '\0';
}

dec_to_hexstr(num,str)
double num;
char str[];
{
    int count1,count2,count3,a;
    char *p;
    double y;
    double x[12] =
        {
        1,
        16,
        256,
        4096,
        65536,
        1048576,
        16777216,
        268435456,
        4294967296
        };
    count1 = count2 = count3 = 0;
    for (a=0; a <= 7; a ++)
        if (num >= x[a])
            {
            count1 = a;
            count3 = a;
            }
    while (count2 <= count1)
        {
        p = &str[count2];
        for (a=0; a <= 15; a++)
            if (num >= a*x[count3] && num < (a+1)*x[count3])
                {
                if ( a <= 9 )
                    *p = a + '0';
                else
                    *p = a - 10 + 'A';
                num = num - a*x[count3];
                }
        count3--;
        count2++;
        }
   p = &str[count2];
   *p = '\0';
}

dec_to_octstr(num,str)
double num;
char str[];
{
    int count1,count2,count3,a;
    char *p;
    double x[14] =
        {
        1,
        8,
        64,
        512,
        4096,
        32768,
        262144,
        2097152,
        16777216,
        134217728,
        1073741824
        };
    count1 = count2 = count3 = 0;
    for (a=0; a <= 10; a++)
        if (num >= x[a] )
            {
            count1 = a;
            count3 = a;
            }
    while (count2 <= count1)
        {
        p = &str[count2];
        for (a=0; a <=7; a++)
            if (num >= a*x[count3] && num < (a+1)*x[count3])
                {
                *p = a + '0';
                num = num - a*x[count3];
                }
        count3--;
        count2++;
        }
    p = &str[count2];
    *p = '\0';
}

dec_to_binstr(num,str)
double num;
char str[];
{
    int count1,count2,count3,a;
    char *p;
    double x[] =
        {
        1,
        2,
        4,
        8,
        16,
        32,
        64,
        128,
        256,
        512,
        1024,
        2048,
        4096,
        8192,
        16384,
        32768,
        };
    count1 = count2 = count3 = 0;
    for (a = 0; a <= 15; a++)
        if (num >= x[a])
            {
            count1 = a;
            count3 = a;
            }
    while (count2 <= count1)
        {
        p = &str[count2];
        for (a = 0; a <= 1; a ++)
            if (num >= a*x[count3] && num < (a+1)*x[count3])
                {
                *p = a + '0';
                num = num - a*x[count3];
                }
        count3--;
        count2++;
        }
    p = &str[count2];
    *p = '\0';
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -