Merge 124fe8d629ade1b210c22329e24c378b8df84cd6 into 338cbafe0d5b07d57f83060ea0f9ba3a6c1155e7

This commit is contained in:
Cicero Tiago 2025-02-10 17:13:46 +08:00 committed by GitHub
commit e61de49c7f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 80 additions and 0 deletions

View File

@ -160,6 +160,7 @@
* [Energy Conversions](conversions/energy_conversions.py)
* [Excel Title To Column](conversions/excel_title_to_column.py)
* [Hex To Bin](conversions/hex_to_bin.py)
* [Hex To Rgb](conversions/hex_to_rgb.py)
* [Hexadecimal To Decimal](conversions/hexadecimal_to_decimal.py)
* [Ipv4 Conversion](conversions/ipv4_conversion.py)
* [Length Conversion](conversions/length_conversion.py)

79
conversions/hex_to_rgb.py Normal file
View File

@ -0,0 +1,79 @@
"""
* Author: Cicero Tiago Carneiro Valentim (https://github.com/cicerotcv)
* Description: Convert hexadecimal (#FF2000) color to RGB (rgb(255, 32, 0)).
References:
https://www.w3schools.com/colors/colors_rgb.asp
https://www.w3schools.com/colors/colors_hexadecimal.asp
"""
def hex_to_rgb(hex_color: str) -> str:
"""
Converts a hexadecimal color code to RGB values.
Args:
hex_color (str): A hexadecimal color code, e.g., "#RGB" or "#RRGGBB".
Returns:
str: A string representation of a rgb value "rgb(r, g, b)" containing
three integers.
Raises:
ValueError: If the input hex_color is not a valid hexadecimal color code.
Examples:
>>> hex_to_rgb("#FF0000")
'rgb(255, 0, 0)'
>>> hex_to_rgb("#00FF00")
'rgb(0, 255, 0)'
>>> hex_to_rgb("#123")
'rgb(17, 34, 51)'
>>> hex_to_rgb("#000000")
'rgb(0, 0, 0)'
>>> hex_to_rgb("#FFFFFF")
'rgb(255, 255, 255)'
>>> hex_to_rgb("#0088FF")
'rgb(0, 136, 255)'
>>> hex_to_rgb("#0032ccAA")
Traceback (most recent call last):
...
ValueError: Invalid hex color code
>>> hex_to_rgb("#0032")
Traceback (most recent call last):
...
ValueError: Invalid hex color code
Note:
- The function supports both 6-digit and 3-digit hex color codes.
"""
hex_color = hex_color.lstrip("#")
# Check if the input is a valid hex color code
if not (len(hex_color) == 6 or len(hex_color) == 3):
raise ValueError("Invalid hex color code")
# Expand 3-digit hex codes to 6 digits (e.g., "#123" to "#112233")
if len(hex_color) == 3:
hex_color = "".join([char * 2 for char in hex_color])
# Parse the hex values to integers
red = int(hex_color[0:2], 16)
green = int(hex_color[2:4], 16)
blue = int(hex_color[4:6], 16)
return f"rgb({red}, {green}, {blue})"
if __name__ == "__main__":
import doctest
doctest.testmod()