Как можно указатель преобразовать в число? С++

Я делаю функцию для преобразования адресов, на которые указывают указатели, в HEX строку с последующим выводом. Не спрашивайте почему я не могу воспользоваться std::cout << std::hex. Просто хочу сделать сам в целях обучения. Проблема в том, что я никак не могу придумать способ перебрать адрес, на который указывает указатель, по битам. Как можно адрес преобразовать в число? reinterpret_cast, но разве его использование не прямой путь к ошибкам, да и вообще сработает ли?


Ответы (1 шт):

Автор решения: Damir Hakimof

В современном С++ использование reinterpret_cast для преобразования указателя к числу - хорошее решение. Однако нужно, что бы тип числа, в который преобразуется указатель, был std::uintptr_t:

#include <cstdint>
void *ptr;
auto number = reinterpret_cast<std::uintptr_t>(ptr);

Конечно, разрешено и использование С-преобразований, но в С++ я бы им не доверял и вам не советую.

→ Ссылка