Handle high 64 bit addresses for C++

Direct conversion via long results in 0xffffffff00000001 converting to
-4294967295, resulting in "0x-4294967295" which is not valid