我有问题要解决,但不知道该怎么做。我的程序从串口字符串接收十六进制值(如 DFF7DF)。我需要将其转换为二进制形式,丢弃前四位,将第五位作为符号位,将接下来的 12 位作为值。
我需要像普通 INT 一样获取值。
我能够在 MATLAB 中编写这样的程序,但我需要 C++ 才能在我的 linux arm board 上运行它。
在此先感谢您的帮助! 马尔辛
最佳答案
你可以这样做:
unsigned long value = strtoul("DFF7DF", NULL, 16);
value >>= 4; // discard first four bits
printf("Minus sign: %s\n", value & 1 ? "yes" : "no");
printf("Value: %lu\n", (value & 0x1FFF) >> 1);
long newvalue = (value & 1 ? -1 : 1) * ((value & 0x1FFF) >> 1);
关于c++ - 十六进制和二进制操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6624282/