#### Rgbhex

R
```// rgbhex.go
// description: convert hex input to red, green and blue and vice versa
// author(s) [darmiel](https://github.com/darmiel)
// see rgbhex_test.go

package conversion

// HEXToRGB splits an RGB input (e.g. a color in hex format; 0x<color-code>)
// into the individual components: red, green and blue
func HEXToRGB(hex uint) (red, green, blue byte) {
// A hex code is structured like this:
// #3498db (light blue) - converted to binary:
// 00110100 10011000 11011011
//  <red>   <green>   <blue>

// To get the blue value we use the bit operation AND with the bit mask 0xFF (in binary: 11111111)
// 00110100 10011000 <11011011> &
// 00000000 00000000  11111111  =
// 00000000 00000000 <11011011> =
blue = byte(hex & 0xFF)

// To get the green value, we first shift the value 8 bits to the right:
//  00110100 <10011000>  11011011  >> 8 =
//  00000000  00110100  <10011000> &
//  00000000  00000000   11111111  =
//  00000000  00000000  <10011000> =
green = byte((hex >> 8) & 0xFF)

// Same as green value, only this time shift 16 to the right
// Alternatively, you can apply a bitmask first and then shift it.
// <00110100> 10011000  11011011 &
//  11111111  00000000  00000000 =
// <00110100> 00000000  00000000 >> 16
//  00000000  00000000 <00110100> =
red = byte((hex >> 16) & 0xFF)
return
}

// RGBToHEX does exactly the opposite of HEXToRGB:
// it combines the three components red, green and blue to an RGB value, which can be converted to e.g. Hex
func RGBToHEX(red, green, blue byte) (hex uint) {
// Sets the bits of blue in position 1-8, green in 9-16 and red in 17-24

// Red: 00110100
// Green: 10011000
// Blue: 11011011
// RGB:
// R << 16: [00110100]  00000000   00000000 |
// G << 8 :  00000000  {10011000}  00000000 |
// B      :  00000000   00000000  <11011011> =
//          [00110100] {10011000} <11011011>
return (uint(red) << 16) | (uint(green) << 8) | uint(blue)
}
```