从字符指针转换为 C 中的整数

Casting from char pointer to integer in C

本文关键字:整数 字符 指针 转换      更新时间:2023-10-16

我有一个char类型的指针数组buf,我想将其中的每个元素转换为无符号int并将其存储在无符号int或int数组中。

问题是,下面用于转换的代码的第二个代码命令在转换无符号 int 后返回一个负值,而我只期望从 0 到 255 的正值。为什么当我使用无符号它时它返回负值?我该怎么办,使第二行代码中的强制转换仅返回 0 到 255 之间的正值?

int array [100];
array[l]=((unsigned int(buf[0]))*5));

请帮我。

谢谢。

第二条指令太复杂了。

将您的说明分成单独的行。

  • 在一行中,访问"char 类型"中的实际存储值指针数组"。

  • 在后续行中,将其转换为所需的任何内容。

这将帮助您诊断问题,并使代码更具可读性和可维护性。

你想要*(reinterpret_cast<unsigned char *>(&buf[0])))不要(unsigned int(buf[0]))。不要忘记在将其乘以 5 之前将其转换为int

我认为您应该将array声明为unsigned int。此外,使用 unsigned char 而不是unsigned int进行强制转换,然后将其分配给array元素。这是因为将负值转换为无符号目标类型将按照标准第 4.7 节第 2 段C++进行。

unsigned int array [100];
array[l]=((unsigned char(buf[0]))*5));