2014-11-06 4 views
0

Как преобразовать unsigned int (UINT32) в const char.Как преобразовать unsigned int (указатель) в const char в C++

Я пытался использовать его, но поскольку он не безопасен, он сбой, когда указатель больше, чем ожидалось.

Итак, как я могу подойти к этому правильно?

unsigned int p = 0x32422342; 
    strLocation = QString::fromUtf8((char*)p, sizeof(p)); 

BTW, если я оставлю бросание, компилятор появляется исключение:

cast to `const char*`from smaller integer type `UINT32` (aka `unsigned int`) [-Wint-to-pointer-cast] 

какие-либо предложения? Значение - это просто случайное число, просто для уточнения.

+0

любые предложения? Это просто случайное число, просто для пояснения – Leonoro

+0

Вы на самом деле пытаетесь передать 32-битный unsigned int указателю на char ('char *'), который из сообщения об ошибке кажется более широким, чем 32 бита (64 бит) , – didierc

+0

Примечание. Если у вас есть разъяснения, касающиеся содержания вопроса, пожалуйста, просто обновите вопрос с этими деталями, вместо того, чтобы помещать их в комментарии. – didierc

ответ

1

Ваши указатели, вероятно, длиной 64 бит, поэтому ваш компилятор жалуется ... Вы уверены, что ваши 32 бита представляют собой хороший адрес? Возможно нет.

+0

Да, я думаю, я могу просто увеличить размер целого числа. Спасибо за ответ! – Leonoro

+0

есть ли способ избежать предупреждения, которое я упомянул в моем вопросе? Использование литья? – Leonoro

+1

Вы должны использовать другой более крупный тип, чем int ... Кажется, что вы находитесь на машине, где ints - 32 бита, и указатели 64. Это известно как архитектура I32LP64. Вы можете использовать длинный или длинный длинный номер для хранения адреса в виде числа. –

 Смежные вопросы

  • Нет связанных вопросов^_^