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

Convert array of char[] to bytes and then convert bytes to int and vise versa

本文关键字:字节 转换 int 反之亦然 然后 char 数组      更新时间:2023-10-16

如何将 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];
}
}

但我没有得到1163019592,而是72698269。

十进制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;
}

现场演示