Good compilation, but I just wanted to say that I don't consider the first method you stated of converting from hexadecimal to binary "memorization".
If you understand both bits and nybbles (1 nybble:4 bits = 1:1), then I think it should come naturally fairly easy. 1 bit = 2^1 possibilities, and 4 bits = 1 nybble = 2^4 = 16 possibilities, which is the number of digits that base sixteen "hexadecimal" arithmetic supports.
Given the above, rather than memorizing the first sixteen whole numbers of the base sixteen arithmetic system, it should be pretty easy to quickly derive for yourself what ???? (binary) is in decimal, which tells you the digit in hexadecimal. Like you said, d3(2^3) + d2(2^2) + d1(2^1) + d0(2^0) gives you the conversion, and it doesn't take very long in my experience.
If you agree with what I've said, this should be an easy and efficient method of converting between both from binary to hexadecimal and from hexadecimal to binary. It might be a lot harder for others to learn, so this is more of my opinion than a correction.
