# python – Converting a RGB color tuple to a six digit code

## python – Converting a RGB color tuple to a six digit code

Use the format operator `%`:

``````>>> #%02x%02x%02x % (0, 128, 64)
#008040
``````

Note that it wont check bounds…

``````>>> #%02x%02x%02x % (0, -1, 9999)
#00-1270f
``````
``````def clamp(x):
return max(0, min(x, 255))

#{0:02x}{1:02x}{2:02x}.format(clamp(r), clamp(g), clamp(b))
``````

This uses the preferred method of string formatting, as described in PEP 3101. It also uses `min()` and `max` to ensure that `0 <= {r,g,b} <= 255`.

Update added the clamp function as suggested below.

Update From the title of the question and the context given, it should be obvious that this expects 3 ints in [0,255] and will always return a color when passed 3 such ints. However, from the comments, this may not be obvious to everyone, so let it be explicitly stated:

Provided three `int` values, this will return a valid hex triplet representing a color. If those values are between [0,255], then it will treat those as RGB values and return the color corresponding to those values.

#### python – Converting a RGB color tuple to a six digit code

This is an old question but for information, I developed a package with some utilities related to colors and colormaps and contains the rgb2hex function you were looking to convert triplet into hexa value (which can be found in many other packages, e.g. matplotlib). Its on pypi

``````pip install colormap
``````

and then

``````>>> from colormap import rgb2hex
>>> rgb2hex(0, 128, 64)
##008040
``````

Validity of the inputs is checked (values must be between 0 and 255).