Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

十进制转十六进制 - C

$
0
0

    在《十六进制转十进制 - C》文章中我们使用完成了16进制转10进制的工作,那么我们能否把10进制转为16进制呢?

    工作原理:

    把要转换的数,除以16,然后,再将商继续除以16,直到商小于16。将最后一个商加上所有余数倒序排列,就是16进制数。


    比如整数为1566,

   (1) 1566 ÷ 16 = 97            余数为14

   (2) 97 ÷ 16 = 6                   余数为1

    

    最后一个商:6;

    倒数第一个余数:1

    倒数第二个余数:14,即E(A=10,B=11,C=12,D=13,E=14,F=15)

    整数1566=0x61E


   程序代码:

/*
 * Int2hex.c
 *
 *  Created on: 2010-07-20
 *      Author: xiaobin
 */
#include <stdio.h>
#include <stdlib.h>

void int2hex(unsigned long input, char output[]);

int main(int argc, char* argv[])
{
    char out[8];
    int k;
    int input = 0;

    if (argc > 1)
        input = atol(argv[1]);

    int2hex(input, out);
   
    printf("%s%d%s", "Integer: ", input, " Hex: 0x");
    for (k = 0; k < 8; k++) {
        char ch = out[k];
        printf("%c", ch);
    }
    printf("\n");

    return 0;
}

void int2hex(unsigned long input, char output[]) {
    int i = 7;
    int j;

    while (((input % 16) != 0) || (input > 15)) {
        char tempCh;

        switch (input % 16) {
            case 0:
                 tempCh = '0';
                 break;
            case 1:
                 tempCh = '1';
                 break;
            case 2:
                 tempCh = '2';
                 break;
            case 3:
                 tempCh = '3';
                 break;
            case 4:
                 tempCh = '4';
                 break;
            case 5:
                 tempCh = '5';
                 break;
            case 6:
                 tempCh = '6';
                 break;
            case 7:
                 tempCh = '7';
                 break;
            case 8:
                 tempCh = '8';
                 break;
            case 9:
                 tempCh = '9';
                 break;
            case 10:
                 tempCh = 'A';
                 break;
            case 11:
                 tempCh = 'B';
                 break;
            case 12:
                 tempCh = 'C';
                 break;
            case 13:
                 tempCh = 'D';
                 break;
            case 14:
                 tempCh = 'E';
                 break;
            case 15:
                 tempCh = 'F';
                 break;
        }
        output[i] = tempCh;
        input = input / 16;
        i--;
    }

    for (j = i; j > -1; j--)
        output[j] = '0';
}



作者:xiaobin_HLJ80 发表于2013-12-22 2:15:08 原文链接
阅读:64 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>