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

标签 c++ casting binary

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

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

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

最佳答案

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

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

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

关于c++ - 将 2 个字符转换为其 ascii 二进制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381143/

相关文章:

c++ - 为什么不能将对继承自(非模板)类 B 的类模板 A 的引用转换为对 B 的引用?

c++ - 多重继承的重载解析

c++ - 如何从编号的txt文件中读取? (data1.txt、data2.txt 等)

mysql - 如何在 MySQL 中将字符串分数 "1 1/2"转换为 float ?

encoding - 如何缩短 Base64 字符串?

c++ - "Cannot convert ' MyClass ' to ' bool '"模板编程错误

c++ - '*(<type> *) &x' 和 'x' 有什么区别?

c++ - 将 reinterpret_cast 转换为 C 样式数组是否非法 C++11?

c - C 中的按位连接

c# - 将float数组写入二进制文件c#