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

C++ 将char[]的数组转换为字节,然后将字节转换为int,反之亦然,c++,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

如何将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];
    }
}
intmain()
{
字符串s=“HERE”;
int n=s.长度();
整数*数字=新整数[n+1];
char*cstr=新字符[n+1];
对于(int i=0;icout十进制
1163019592
是二进制
01000101 01010010 01000101 01001000
,它是十六进制
0x45 0x52 0x45 0x48

“HERE”
是字节
0x48 0x45 0x52 0x45

相同的字节,不同的顺序

如果希望
“HERE”
等同于
1163019592
,而不考虑endian,请尝试以下操作:

intmain()
{
字符串s=“HERE”;
尺寸n=s.长度();
uint32_t编号=0;
对于(int i=0;inumber=(如果您想确保它真的是4字节,您应该使用
std::uint32\u t
from或任何其他32位固定宽度整数类型的数字。请看当前版本的标题是多余的,因为您会将源代码中的
char[]
读取为“字符数组”。我建议使用“转换字符串…”或“转换字符数组…”很简单,因为代码标记在标题中不起作用。如果这是作业或学生问题,则可能是为了练习位移位和位逻辑运算符(一些
&
~
~
^
的子集)以及测试您对代码中出现的变量如何存储在内存中的理解。考虑使用<代码> STD::UnQuyGPPT/<代码>,而不是裸用法使用<代码>新< /代码>。因为,您没有调用<代码>删除[]/COD> <代码> >编号<代码>或<代码> CSTR < /代码>。