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