如何将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。
答案 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;
}