Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将C+中的无符号int(指针)转换为const char+;_C++_C_Casting_Unsigned Integer - Fatal编程技术网

C++ 如何将C+中的无符号int(指针)转换为const char+;

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

如何将无符号整数(UINT32)转换为常量字符

我试图强制转换它,但因为指针大于预期值时,类型不安全会崩溃

那么我如何才能正确地处理这个问题呢

    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无法将地址存储为数字。不确定是否存在警告,这几乎不取决于编译器。请阅读文档。