问题:编程实现将一个N进制数转换成M进制数。(c/c++、Java、Javascript、C#、Python)

1、Python 手写算法版

  1. def conversion_num(num, src, dest):
  2. rtn = ''
  3. # 1、校验源和目标是否相同
  4. if src == dest:
  5. rtn = num
  6. # 2、转成10进制#
  7. if src != 10:
  8. num_str = str(num)
  9. num_str = num_str[::-1]
  10. exe_num = 0
  11. dec_num = 0
  12. for num_char in num_str:
  13. # 十六进制处理
  14. if num_char == 'A':
  15. num_char = ''
  16. elif num_char == 'B':
  17. num_char = ''
  18. elif num_char == 'C':
  19. num_char = ''
  20. elif num_char == 'D':
  21. num_char = ''
  22. elif num_char == 'E':
  23. num_char = ''
  24. elif num_char == 'F':
  25. num_char = ''
  26.  
  27. num_int = int(num_char)
  28. if exe_num == 0:
  29. dec_num += num_int
  30. else:
  31. dec_num += src ** exe_num * num_int
  32. exe_num += 1
  33. num = dec_num
  34. # 3、转成目标进制
  35. if dest == 10:
  36. rtn = num
  37. else:
  38. num = int(num)
  39. while True:
  40. divisor = num // dest
  41. remainder = num % dest
  42. # 十六进制处理
  43. if remainder == 10:
  44. remainder = 'A'
  45. elif remainder == 11:
  46. remainder = 'B'
  47. elif remainder == 12:
  48. remainder = 'C'
  49. elif remainder == 13:
  50. remainder = 'D'
  51. elif remainder == 14:
  52. remainder = 'E'
  53. elif remainder == 15:
  54. remainder = 'F'
  55. rtn = str(remainder) + rtn
  56. if divisor <= 0:
  57. break
  58. else:
  59. num = divisor
  60. # 4、处理空的字符串
  61. if rtn == '':
  62. rtn = ''
  63. return rtn
  64.  
  65. new_num = conversion_num('', 2, 16)
  66. print(new_num) 

2、python内部方法版:

  1. def conversion_num(num, src, dest):
  2. rtn = ''
  3. # 1、校验源和目标是否相同
  4. if src == dest:
  5. rtn = num
  6. # 2、转成10进制#
  7. if src != 10:
  8. dec_num = 0
  9. if src == 2:
  10. dec_num = int(num, 2)
  11. elif src == 8:
  12. dec_num = int(num, 8)
  13. elif src == 16:
  14. dec_num = int(num, 16)
  15. num = dec_num
  16. # 3、转成目标进制
  17. if dest == 10:
  18. rtn = num
  19. else:
  20. if dest == 2:
  21. rtn = bin(num)
  22. elif dest == 8:
  23. rtn = oct(num)
  24. elif dest == 16:
  25. rtn = hex(num)
  26. # 4、处理空的字符串
  27. if rtn == '':
  28. rtn = ''
  29. return rtn
  30.  
  31. new_num = conversion_num('', 2, 16)
  32. print(new_num)

3、

编程实现将一个N进制数转换成M进制数的更多相关文章

  1. NOJ 1012 进制转换(十进制转换成随意进制)

    题目: 进制转换 时间限制(普通/Java) : 1000 MS/ 3000 MS          执行内存限制 : 65536 KByte总提交 : 1819            測试通过 : ...

  2. HDU_2031——十进制转换成R进制

    Problem Description 输入一个十进制数N,将它转换成R进制数输出.   Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=1 ...

  3. iOS 16进制字符串转换成int十进制

    NSRange rangeErr; rangeErr.location = 6; rangeErr.length = 2; NSString *strings = [value substringWi ...

  4. Java中将16进制字符串转换成汉字

    技术交流群:233513714 /** * 将16进制字符串转换成汉字 * @param str * @return */ public static String deUnicode(String ...

  5. N进制数组转换成正整数

    给定一个任意长度的数组,其中的元素按照一定的进制(N进制)来转换成正整数 //把数组中的元素按照N进制转换成为正整数 #include <stdio.h> #include <std ...

  6. Linux c字符串中不可打印字符转换成16进制

    本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...

  7. ip地址转换成16进制long

    <span style="font-size:18px;">public class IpUtil { /** * ip地址转换成16进制long * @param i ...

  8. C++实现16进制字符串转换成int整形值

    开发中经常需要把16进制字符串转换成整形,写了个个代码供大家参考下: #include <stdio.h> #include <string.h> //字符转换成整形 int ...

  9. //C语言:将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制数返回。

    //函数fun:将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制数返回. #include <stdio.h> #pragma warning (disable:4996) ...

随机推荐

  1. laravel seed填充数据步骤

  2. vue2.0 微信分享

    需求:首页,列表页,详情页的分享,活动页分享并进行相关操作,比如分享一次活动次数加1 首先:阅读微信开发文档:https://mp.weixin.qq.com/wiki?t=resource/res_ ...

  3. idea上手

    IntelliJ Idea 常用快捷键列表 最常用: Ctrl+P,可以显示参数信息 Alt+Insert,可以生成构造器/Getter/Setter等 Ctrl+Enter,导入包,自动修正 Ctr ...

  4. 15. Password auditing (密码审核 12个)

    Aircrack是一套用于802.11a / b / g WEP和WPA破解的工具. 一旦收集到足够的加密数据包,它就会实现最有效的破解算法来恢复无线密钥.. 该套件包括十多个分离工具,包括airod ...

  5. 利用python实现两个文件夹的同步

    其实无论windows还是Linux,简单地去实现两个两个文件夹的同步只需系统自带的复制命令加参数就可以了. WINDOWS : xcopy 源文件夹\* 目标文件夹 /s /e /y Linux : ...

  6. Scrapy 代理IP

    Scrapy 代理IP 一.Scarpy使用代理IP 1.在setting.py 配置 代理服务器IP 2.在middlermares.py 配置 downloadmiddlermare(下载中间件) ...

  7. jumpserver管理入门

    比较规范一点的步骤 1.先在用户管理查看用户组里,添加用户组 2.在用户管理查看用户里,添加用户 3.在资产管理里查看资产,添加资产.在批量增加那里可以使用表格快速导入添加 4.在授权管理里的系统用户 ...

  8. select大表报错

    MySQL查询大表报错 MySQL执行select操作时候,如果执行查询的表的数据量比较大,就会报错error code 2013.或者报错已杀死,并直接退出MySQL客户端.如下所示: mysql& ...

  9. 关于FIFO异步复位的问题

    关于FIFO异步复位的问题 FIFO异步复位的宽度,需要保证至少3个较慢时钟的时钟周期长度. 怎样对一个脉冲加宽呢? `timescale 1ns / 1ps //////////////////// ...

  10. 2018总结-->2019新目标

    2018完成的事情: ①考到了驾照: ②刷了很多题,春季找到了实习,赚到了去日本旅游的经费和2019毕业租房的预算,最后签了offer: ③去了西安.天津.山西,看到了不一样的人和事: ④发了小论文, ...