如何用Python做一个RGB和16进制的互转工具

2025-10-31 06:14:25

1、原理:①首先知道RGB如何转成16进制,把R、G、B三个值首先转为16进制,转换后不足2位的用“0”补齐,再把转换后的结果依次连接在一起,前面加上一个“#”就可以了。②16进制转RGB只要把16进制按照相反的步骤转为10进制就可以了。

如何用Python做一个RGB和16进制的互转工具

如何用Python做一个RGB和16进制的互转工具

2、代码整体分为3部分:①定义RGB转16进制函数。②定义16进制转RGB的函数。③询问用户是要进行RGB转16进制还是16进制转RGB,然后根据输入进行函数调用。

如何用Python做一个RGB和16进制的互转工具

如何用Python做一个RGB和16进制的互转工具

3、def rgb_to_hex():   #首先定义一个RGB颜色转16进制的函数

    while True:   #无限循环

        try:    #尝试获取RGB值的输入

            r = int(input('请输入RGB中R的数值:'))

            g = int(input('请输入RGB中G的数值:'))

            b = int(input('请输入RGB中B的数值:'))

            if r < 0 or r > 255 or g < 0 or g > 255 or b < 0 or b > 255:   #如果RGB的值不在0-255之间,就打印一条提示语

                print('RGB请输入0-255之间的整数!\n')   #提示语

            else:   #RGB的值在0-255之间就终止循环

                break

        except ValueError:   #如果引发了类型错误也会打印一条提示语

            print('RGB请输入0-255之间的整数!\n')

如何用Python做一个RGB和16进制的互转工具

4、    hex_r = hex(r)[2:].upper()   #10进制转16进制,并去掉16进制前面的“0x”,再把得出的结果转为大写

    hex_g = hex(g)[2:].upper()

    hex_b = hex(b)[2:].upper()

    hex_r0 = hex_r.zfill(2)   #位数不足2位时补“0”

    hex_g0 = hex_g.zfill(2)

    hex_b0 = hex_b.zfill(2)

    print('16进制:#' + hex_r0 + hex_g0 + hex_b0)   #打印最终结果(格式如“#ff0402”)

5、def hex_to_rgb():   #再定义一个16进制转RGB颜色的函数

    while True:   #无限循环

        hex_color = str(input('请输入16进制颜色:'))   #获取16进制颜色的输入

        if hex_color[0] != '#' or len(hex_color) != 7:   #如果16进制颜色前面没有“#”或16进制字符串的长度不为7,就打印一条提示语

            print('请输入标准的16进制颜色,以“#”开头,字符长度为7!\n')

        else:   #如果16进制颜色符合标准

            try:   #尝试进行16进制转10进制

                r = int('0x' + hex_color[1:3],16)   #16进制颜色格式如“#ff0402”,提取出其中的“ff”、“04”、“02”三个16进制数字,并在前面加上“0x”,表示16进制

                g = int('0x' + hex_color[3:5],16)

                b = int('0x' + hex_color[5:7],16)

                break   #转换完成就退出循环

            except ValueError:   #引发了类型错误就打印提示语

                print('请输入标准的16进制颜色,以“#”开头,字符长度为7!\n')

    print('RGB值:' + str(r) + ',' + str(g) + ',' + str(b))   #打印出RGB值,用“,”分开

如何用Python做一个RGB和16进制的互转工具

6、while True:   #无限循环

    user_in = str(input('请输入你要怎样转换:输入“1”是RGB转16进制,输入“2”是16进制转RGB:'))   #提示用户输入“1”或“2”

    if user_in == '1':   #如果用户输入“1”就运行RGB转16进制的函数

        rgb_to_hex()

        break   #终止循环

    elif user_in == '2':   #如果用户输入“2”就运行16进制转RGB的函数

        hex_to_rgb()

        break

    else:   #如果输入其他的内容,就打印一条提示语

        print('只能输入“1”或“2”!\n')

如何用Python做一个RGB和16进制的互转工具

7、#完整代码

def rgb_to_hex():   #定义一个RGB颜色转16进制的函数

    while True:   #无限循环

        try:    #尝试获取RGB值的输入

            r = int(input('请输入RGB中R的数值:'))

            g = int(input('请输入RGB中G的数值:'))

            b = int(input('请输入RGB中B的数值:'))

            if r < 0 or r > 255 or g < 0 or g > 255 or b < 0 or b > 255:   #如果RGB的值不在0-255之间,就打印一条提示语

                print('RGB请输入0-255之间的整数!\n')   #提示语

            else:   #RGB的值在0-255之间就终止循环

                break

        except ValueError:   #如果引发了类型错误也会打印一条提示语

            print('RGB请输入0-255之间的整数!\n')

    hex_r = hex(r)[2:].upper()   #10进制转16进制,并去掉16进制前面的“0x”,再把得出的结果转为大写

    hex_g = hex(g)[2:].upper()

    hex_b = hex(b)[2:].upper()

    hex_r0 = hex_r.zfill(2)   #位数不足2位时补“0”

    hex_g0 = hex_g.zfill(2)

    hex_b0 = hex_b.zfill(2)

    print('16进制:#' + hex_r0 + hex_g0 + hex_b0)   #打印最终结果(格式如“#ff0402”)

def hex_to_rgb():   #再定义一个16进制转RGB颜色的函数

    while True:   #无限循环

        hex_color = str(input('请输入16进制颜色:'))   #获取16进制颜色的输入

        if hex_color[0] != '#' or len(hex_color) != 7:   #如果16进制颜色前面没有“#”或16进制字符串的长度不为7,就打印一条提示语

            print('请输入标准的16进制颜色,以“#”开头,字符长度为7!\n')

        else:   #如果16进制颜色符合标准

            try:   #尝试进行16进制转10进制

                r = int('0x' + hex_color[1:3],16)   #16进制颜色格式如“#ff0402”,提取出其中的“ff”、“04”、“02”三个16进制数字,并在前面加上“0x”,表示16进制

                g = int('0x' + hex_color[3:5],16)

                b = int('0x' + hex_color[5:7],16)

                break   #转换完成就退出循环

            except ValueError:   #引发了类型错误就打印提示语

                print('请输入标准的16进制颜色,以“#”开头,字符长度为7!\n')

    print('RGB值:' + str(r) + ',' + str(g) + ',' + str(b))   #打印出RGB值,用“,”分开

while True:   #无限循环

    user_in = str(input('请输入你要怎样转换:输入“1”是RGB转16进制,输入“2”是16进制转RGB:'))   #提示用户输入“1”或“2”

    if user_in == '1':   #如果用户输入“1”就运行RGB转16进制的函数

        rgb_to_hex()

        break   #终止循环

    elif user_in == '2':   #如果用户输入“2”就运行16进制转RGB的函数

        hex_to_rgb()

        break

    else:   #如果输入其他的内容,就打印一条提示语

        print('只能输入“1”或“2”!\n')

如何用Python做一个RGB和16进制的互转工具

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢