C++ 如何将C+中的无符号int(指针)转换为const char+;
如何将无符号整数(UINT32)转换为常量字符 我试图强制转换它,但因为指针大于预期值时,类型不安全会崩溃 那么我如何才能正确地处理这个问题呢C++ 如何将C+中的无符号int(指针)转换为const char+;,c++,c,casting,unsigned-integer,C++,C,Casting,Unsigned Integer,如何将无符号整数(UINT32)转换为常量字符 我试图强制转换它,但因为指针大于预期值时,类型不安全会崩溃 那么我如何才能正确地处理这个问题呢 unsigned int p = 0x32422342; strLocation = QString::fromUtf8((char*)p, sizeof(p)); 顺便说一句,如果我退出强制转换,编译器将显示一个异常: cast to `const char*`from smaller integer type `UINT32` (a
unsigned int p = 0x32422342;
strLocation = QString::fromUtf8((char*)p, sizeof(p));
顺便说一句,如果我退出强制转换,编译器将显示一个异常:
cast to `const char*`from smaller integer type `UINT32` (aka `unsigned int`) [-Wint-to-pointer-cast]
有什么建议吗?值只是一个随机数,只是为了澄清。您的指针可能有64位长,这就是为什么您的编译器会抱怨。。。你确定你的32位代表一个好地址吗?可能不会。有什么建议吗?该值只是一个随机数,只是为了澄清。实际上,您正试图将一个32位无符号int转换为指向char(
char*
)的指针,从错误消息来看,它似乎比32位(64位)宽。注意:如果您要澄清问题的内容,请简单地用这些细节更新问题正文,而不是把它们放在评论中。你想实现什么(不是演员阵容本身,而是在更广泛的背景下)?此外,如果你用随机数生成地址,你很可能最终得到一个无效的地址(即,不在程序分配的内存空间中或无法读取的地址).是的,我想我可以增加整数的大小。谢谢你的回答!有没有办法避免我在问题中提到的警告?使用强制转换?你必须使用比int更大的类型…看起来你在一台机器上,int是32位的,指针是64。这就是I32LP64体系结构。你可以使用long或long l无法将地址存储为数字。不确定是否存在警告,这几乎不取决于编译器。请阅读文档。