我对C语言编程相当新,我有一个问题需要修复。当我收到数据时,最重要的位打印为00f1,最低位打印005e。 如何获得它以使值可以是00f15e? 截至目前我只能让他们打印5ef100
答案 0 :(得分:1)
假设您正在讨论的是字节而不是位,MSB是0xf1,LSB是0x5e,并且您希望以2字节的形式将所有字节组合在一起:
Maybe
(数字8必须用定义替换以避免幻数)
答案 1 :(得分:1)
使用位操作:
#include <stdio.h>
typedef unsigned char uchar;
int main()
{
uchar m=0xf1;
uchar l=0x5e;
unsigned ml=((unsigned)m)<<8|(unsigned)l;
//doing it in unsigned (at least 16 bits guaranteed, no sign bit)
printf("%06x\n", ml); //prints 00f15e
}