LSB
如果我们使用转换并MSB
转换回来,您的代码将完美运行。
根据您的问题,我假设如果数据 MSB 和 LSB 是用户输入的值,那么您需要丢弃 2 位dataMSB
,而不是dataLSB
. 为此,您可能需要执行以下操作:
number = (dataMSB & 0x003F)<< 8;
number += dataLSB;
dataMSB
如果长度为 8 位,例如 255 ,它也会给你完美的结果。
我用下面的来测试。二进制反向打印:
#include <stdio.h>
#include <stdlib.h>
#define BIT(i) (1<<(i))
void PrintBin(const int num)
{
int value = num;
char bin[17]="0000000000000000";
int i;
for (i=0;i<16;i++)
bin[i]= (value & BIT(i))? '1':'0';
bin[16]='\0';
printf("%d::%s\n",num,bin);
}
void main()
{
int dataMSB, dataLSB;
int number = 16383;
int number1 =0;
PrintBin(number);
dataMSB = (number>>8) & 0x00FF;
dataLSB = number & 0x00FF;
PrintBin(dataMSB);
PrintBin(dataLSB);
dataMSB =255;
number1 =(dataMSB & 0x003F) << 8;
number1 += dataLSB;
PrintBin(number1);
}