鱼C论坛

 找回密码
 立即注册
查看: 1087|回复: 4

十进制和十六进制间互相转换

[复制链接]
发表于 2018-2-5 16:44:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下:
  1. #将(255,255,255)RGB--->#FFFFFF
  2. def base_10_system_to_hex(args=(None,None,None)):
  3.    
  4.     str_part = "#"

  5.     for each in args:
  6.         if each <= 255:
  7.             str1 = hex(each)[-2:]
  8.             str_part += str1
  9.         else:
  10.             print("Error:%d 不在0-255之间"%each)
  11.             return None

  12.     return str_part.upper()
  13. #将#FFFFFF --->  (255,255,255)RGB
  14. def hex_to_base_10_system(args):
  15.     if args[0] == '#':
  16.         #只取#后面的字母部分
  17.         args_slice = args[1:]
  18.         #全转大写
  19.         args_slice_upper = args_slice.upper()
  20.         if args_slice_upper <= 'FFFFFF':
  21.             print("---------")
  22.                 #转化成10进制
  23.             
  24.             args_1 = args_slice_upper[:2]
  25.             args_1 = "0x"+args_1
  26.             int_1 = int(args_1,16)
  27.             args_2 = args_slice_upper[2:4]
  28.             args_2 = "0x"+args_2
  29.             int_2 = int(args_2,16)
  30.             args_3 = args_slice_upper[4:]
  31.             args_3 = "0x"+args_3
  32.             int_3 = int(args_3,16)   
  33.             #print(int_1,int_2,int_3,type(int_1))
  34.             tp = (int_1,int_2,int_3)
  35.             #print("tp:",tp)
  36.             return tp
  37.         

  38.         else:
  39.             print("%s不在'#0000-#FFFFFF'范围之内")
  40.             return None


  41.    

  42. def color(args):
  43.     try:
  44.         if args[0] == '#':
  45.             
  46.             hex_to_base_10_system(args)
  47.         if isinstance(args[0],int):
  48.             
  49.             base_10_system_to_hex(args)
  50.     except Exception as t:
  51.         print(t)
  52.         
  53.    
复制代码


只要不是用color方法都是没问题的,
  1. >>> hex_to_base_10_system('#ffffff')
  2. ---------
  3. (255, 255, 255)
复制代码

  1. >>> base_10_system_to_hex((255,255,255))
  2. '#FFFFFF'
复制代码


但是只要调用了color方法,
  1. >>> color("#ffffff")
  2. ---------
复制代码

  1. >>> color((255,255,255))
复制代码


并没有返回值,这个问题好奇怪,好像
  1. try:
  2.         if args[0] == '#':
复制代码

这个判断去掉了,其中一个转RGB的方法就有返回值了,不知道怎么回事》?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-5 16:55:52 | 显示全部楼层
你传入的字符串是一个变量,因此args[0]是‘#ffffff‘’而不是‘#’
另一个相同,你传参没搞明白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-5 17:05:16 | 显示全部楼层
本帖最后由 了解2号 于 2018-2-5 17:06 编辑
塔利班 发表于 2018-2-5 16:55
你传入的字符串是一个变量,因此args[0]是‘#ffffff‘’而不是‘#’
另一个相同,你传参没搞明白


不是,他哪个函数已经进去执行了,就是到末尾没有返回值出来
  1. print(int_1,int_2,int_3,type(int_1))
  2.             tp = (int_1,int_2,int_3)
  3.             print("tp:",tp)
复制代码

这个注释打开后执行到里面了
  1. >>> color('#ffffff')
  2. ---------
  3. 255 255 255 <class 'int'>
  4. tp: (255, 255, 255)
  5. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-5 17:08:50 | 显示全部楼层
塔利班 发表于 2018-2-5 16:55
你传入的字符串是一个变量,因此args[0]是‘#ffffff‘’而不是‘#’
另一个相同,你传参没搞明白

>>> color('#ffffff')
args[0]:#
---------
255 255 255 <class 'int'>
tp: (255, 255, 255)
>>>
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-5 20:08:09 | 显示全部楼层
好吧,我搞错了,args[0]
能实现传参
但是为什么没有显示,你把每个函数return改为print就OK了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-2 14:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表