double address = 3068770752;
std::string hello = (char *)address;
ошибка: неверное приведение типа ‘double’ к типу ‘char *’
Итак, если я использую тип long или int, это работает, но с типом double это не работает.
Как я могу это сделать?
Спасибо!
РЕДАКТИРОВАТЬ: я программирую расширение PHP на C ++, это «содержимое» пользовательской функции «get_memory_data (двойной адрес)», в php вы используете:
<?php
$a = "hello";
$b = get_memaddress($a); //0x123456
$c = hextodec($b); //3068770752
$d = get_memdata($c); //hello
Сначала приведите к целому числу:
char * p = reinterpret_cast<char *>(static_cast<uintptr_t>(address));
std::string i_cause_undefined_behaviour(p);
Не имеет смысла хранить двойной адрес памяти, это не причина, по которой компилятор не позволит вам, но это, конечно, не помогает. На 64-битных платформах вам нужно 64-битные данные для точного хранения адреса памяти, но двойной тип может содержать только 53-битную точность.
Если вы хотите жестко запрограммировать адрес памяти, вы должны сохранить его в uintptr_t.