Regarding the hexadecimal RGB color representations: Having already gotten the conversion working you probably already got all this, but in case it helps, the typical hexadecimal representation for colors (at least when using RGB which is commonplace) is really closely related to the delimited R,G,B - as you said, the hex number is split into three parts for the red green and blue, each two digits in base-16 meaning each part is 0-255 like often seen in common delimited/separated R,G,B representations.

So for example, that very reddish magenta shade in the corner of your table above (#FA0046) is Red FA, Green 00, Blue 46 which written in base-10 is Red 250, Green 0, Blue 70.
So the hex representations in general are just #RRGGBB, where the R's are digits of the red value (FA in the above example), G's digits of the green (00 in the above example), B's the blue (46 in the above example). Updating or changing one of red, green, or blue for a given color just means changing the value in the two digits that represent that one of red, green or blue.

Sorry if you're already familiar with all of that and I'm being terribly presumptuous - but I'm used enough to the representation of RGB in hex that I don't usually think of it offhand as a separate representation, so thought I'd offer an explanation of my own on the off chance it can help your understanding. I guess what I'm getting at is it hopefully shouldn't be too much more complicated to use than separated RGB, because the conversion itself is pretty much a direct mapping - the only parts that get more complicated are trying to operate on the values, in which case you just need to make sure to treat the separate parts of the whole hexadecimal value appropriately as separate sections for red, green and blue.