如何在 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);