A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. //
  2. //  main.c
  3. //  十进制转二进制、八进制、十六进制
  4. //
  5. //  Created by king on 15/9/1.
  6. //  Copyright (c) 2015年 king. All rights reserved.
  7. //

  8. #include <stdio.h>
  9. void total(int value, int base, int offset);
  10. void ptintBinary(int num);
  11. void printfOct(int num);
  12. void printfHex(int num);

  13. int main(int argc, const char * argv[]) {
  14.    
  15.     //    ptintBinary(10);
  16.     //    printfOct(10);
  17.     printfHex(10);
  18.     return 0;
  19. }
  20. /**
  21. *  转16进制
  22. *
  23. *  @param num 需要转换的数值
  24. */
  25. void printfHex(int num)
  26. {
  27.     total(num, 15, 4);
  28. }
  29. /**
  30. *  转八进制
  31. *
  32. *  @param num 需要转换的数值
  33. */
  34. void printfOct(int num)
  35. {
  36.     total(num, 7, 3);
  37. }
  38. /**
  39. *  转二进制
  40. *
  41. *  @param num 需要转换的数值
  42. */
  43. void ptintBinary(int num)
  44. {
  45.     total(num, 1, 1);
  46. }

  47. /**
  48. *  转换所有的进制
  49. *
  50. *  @param value  需要转换的数值
  51. *  @param base   需要&上的数
  52. *  @param offset 需要右移的位数
  53. */
  54. void total(int value, int base, int offset)
  55. {
  56.     // 1.定义一个数组, 用于保存十六进制中所有的取值
  57.     char charValues[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  58.     // 2.定义一个数组, 用于保存查询后的结果
  59.     char results[32] = {'0'};
  60.     // 3.定义一个变量, 用于记录当前需要存储到查询结果数组的索引
  61.     int pos = sizeof(results)/ sizeof(results[0]);
  62.    
  63.     while (value != 0) {
  64.         // 1.取出1位的值
  65.         int res = value & base;// 1 7 15
  66.         // 2.利用取出来得值到表中查询对应的结果
  67.         char c = charValues[res];
  68.         // 3.存储查询的结果
  69.         results[--pos] = c;
  70.         // 4.移除二进制被取过的1位
  71.         value = value >> offset;// 1 3 4
  72.     }
  73.    
  74.     // 4.打印结果
  75.     for (int i = pos; i < 32; i++) {
  76.         printf("%c", results[i]);
  77.     }
  78.     printf("\n");
  79.    
  80. }
复制代码

1 个回复

倒序浏览
好有心,加油,同学
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马