-5

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

问题是,下面代码的第二个代码命令在转换为 unsigned int 后返回一个负值,而我只期望从 0 到 255 的正值。为什么当我使用 unsigned 它时它返回负值?我应该怎么做才能使第二行代码中的转换只返回 0 到 255 之间的正值?

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

请帮帮我。

谢谢你。

4

3 回答 3

2

第二条指令太复杂了。

将您的说明分成不同的行。

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

  • 在随后的一行中,将其转换为您想要的任何内容。

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

于 2012-06-27T14:51:56.187 回答
0

我认为你应该array声明为unsigned int. 此外,使用unsigned charto cast 而不是unsigned int然后将其分配给array元素。这是因为将负值转换为无符号目标类型将根据 C++ 标准第 4.7 节第 2 节。

unsigned int array [100];
array[l]=((unsigned char(buf[0]))*5));
于 2012-06-27T15:12:00.847 回答
0

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

于 2012-06-27T14:54:22.930 回答