Close, a couple of clarifications:
The ‘digit’ thing is all that really got you on the HexDigit()
ones, the int/uint thing doesn’t really matter, the int you pass will just be treated as a uint and will otherwise work as expected.
The last two are not an endianess thing, but a pixel format thing. Standards are strange and there isn’t really one of course anyway, but in file formats and image editing programs we are accustomed to RGBA, while in hardware land the pixels on your video card are stored ARGB and this is what the FColor uses internally and what the ctor taking an int sets ‘raw’.
To correct your original last two examples you would rotate the bits right 8 places before constructing the color.