字符数组类型转换为整数

时间:2013-07-02 16:29:12

标签: c++ c

我有一个char数组,它保持值0x4010,我希望这个值成为无符号短变量。 我这样做是通过使用atoi但得到短值为0

unsigned short cvtValue = (unsigned short) atoi(aclDta);

0x10的字符是DEL,我希望是因为这个。 十进制是6416

3 个答案:

答案 0 :(得分:4)

您不需要使用atoi 转换数据,只需投放它:

unsigned short cvtValue = *(unsigned short *)aclDta;

答案 1 :(得分:2)

你问的是没有意义的。 ascii中的0x4010是'@',后跟'数据链接转义'。

atoi,strtol等都是关于解析包含数字的ascii字符串 - @\DLE不是数字。

您真正想要的是将0x4010字节视为单个短路。

这是一种便宜的方式:

cvtValue |= ((short)aclData[0]) << 8;
cvtValue |= ((short)aclData[1]);

答案 2 :(得分:1)

我发表评论,但显然作为新用户,我不能?无论如何,如果您将应用程序移植到具有不同内联性的平台上,antiduh的答案会更正确。

char *str = "01";
unsigned short val = *(unsigned short *)str;

在小端系统上val == 0x3130。在big endien systems val == 0x3031。