将2个字符转换为其ascii二进制代码

时间:2015-04-01 00:59:40

标签: c++ casting binary

我从加速度计读取字符格式的二进制数据,它由高字节和低字节组成。自从我使用C ++以来,很长一段时间,通常只使用更高级别的东西。 我有以下功能:

short char2short(char* hchar, char* lchar)
{
    char temp[2];
    temp[0] = *hchar;
    temp[1] = *lchar;

如何将这些值转换为整数? 就我所知,atoi的工作方式不同(例如" 21" = 21)。 我可以将char类型转换为int吗?但它如何使用更高位和更低位? 在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您应该将字节存储为无符号,以避免移位符号位的问题。

short char2short(unsigned char hchar, unsigned char lchar)
{
    return static_cast<short>(lchar | (hchar << 8));
}   

您可能还想使用unsigned short。这取决于你的期望。