从char指针转换为C中的整数

时间:2012-06-27 14:49:26

标签: c++ casting

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

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

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

请帮帮我。

谢谢。

3 个答案:

答案 0 :(得分:2)

第二条指令过于复杂。

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

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

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

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

答案 1 :(得分:0)

您希望*(reinterpret_cast<unsigned char *>(&buf[0])))不是(unsigned int(buf[0]))。不要忘记在将乘以5之前将其投射到int

答案 2 :(得分:0)

我认为你应该将array声明为unsigned int。另外,使用unsigned char代替unsigned int进行投射,然后将其分配给array元素。这是因为负值转换为无符号目标类型将符合C ++标准第4.7节第2段。

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