如何将char *地址转换为int? 在cygwin中,我得到了如下错误:
test.cpp:31:80:错误:从'char *'到'int'的转换损失精度[-fpermissive] cout<< "己烷:0X" << setw(8)<<左<< hex<<的reinterpret_cast(安培; PChar类型[I])
(翻译:错误,从'char *'到'int'的转换将失去精度)
以下是我的源代码:
int main()
{
int num = 0x12345678;
char *pchar = reinterpret_cast<char*>(&num);
if (0x12 == *pchar)
{
cout << "big-end" << endl;
}
else if (0x78 == *pchar)
{
cout << "little-end" << endl;
}
else
{
cout << "wtf" << endl;
}
for (int i = 0; i < 4; ++i)
{
cout << "hex:0x" << setw(8) << left << hex << reinterpret_cast<int>(pchar + i)
<< "val:0x" << hex << static_cast<int>(pchar[i]) << endl;
}
return 1;
}
答案 0 :(得分:4)
你不能:行为将是 undefined 。这是因为char*
与int
无关。
在您的情况下,为什么不使用%p
作为指针的格式说明符? (严格来说,您应该将参数转换为void*
或const void*
)。
cout
会自动为您执行此操作:
cout << (void*)(pchar);