如何在 C++ 中将 char* 指针地址转换为 int
how to convert char* pointer address to int in c++
如何将 char* 地址转换为 int?
在 cygwin 中,我得到如下错误:
test.cpp:31:80: 错误:从‘char*’到‘int’的转换损坏精度 [-fpermissive]
cout << "hex:0x" << setw(8) << left << hex << reinterpret_cast(&pchar[i])
(translate: 错误,'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;
}
你不能:行为将是未定义。这是因为 char*
与 int
.
无关
在您的情况下,为什么不使用 %p
作为指针的格式说明符? (严格来说,您应该将参数转换为 void*
或 const void*
)。
cout
会自动为您执行此操作:
cout << (void*)(pchar);
如何将 char* 地址转换为 int? 在 cygwin 中,我得到如下错误:
test.cpp:31:80: 错误:从‘char*’到‘int’的转换损坏精度 [-fpermissive] cout << "hex:0x" << setw(8) << left << hex << reinterpret_cast(&pchar[i])
(translate: 错误,'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;
}
你不能:行为将是未定义。这是因为 char*
与 int
.
在您的情况下,为什么不使用 %p
作为指针的格式说明符? (严格来说,您应该将参数转换为 void*
或 const void*
)。
cout
会自动为您执行此操作:
cout << (void*)(pchar);