将char []数组转换为字节,然后将字节转换为int,反之亦然

时间:2019-10-17 21:19:00

标签: c++

如何将4个字符“ HERE”转换为值为1163019592的4字节整数?

这是我尝试过的:

int main()
{
    string s = "HERE";
    int n = s.length();

    int* number = new int[n + 1];
    char* cstr = new char[n+1];

    for (int i = 0; i < n; i++) {
        cstr[i] = s[i];
        number[i] = cstr[i];
        cout << number[i];
    }
}

但我得到了72698269,而不是1163019592。

1 个答案:

答案 0 :(得分:1)

十进制1163019592是二进制01000101 01010010 01000101 01001000,即十六进制0x45 0x52 0x45 0x48

"HERE"是字节0x48 0x45 0x52 0x45

相同字节,不同顺序。

如果您想让"HERE"等于1163019592,而不考虑字节序,请尝试以下操作:

int main()
{
    string s = "HERE";
    size_t n = s.length();

    uint32_t number = 0;

    for (int i = 0; i < n; i++) {
        number = (number << 8) | static_cast<uint8_t>(s[n-i-1]);
    }

    cout << number;
}

Live demo