为了我的一生,我无法弄清楚如何将(最大)12位数字转换为2个8位字节(其中一个值显然不能超过4位)。

例如,我可以通过以下方式将7(4位值)和60(8位值)整数转换为3079
7 + (60 << 8) & 0xfff;

但是我无法逆转此过程,从60提取73079

我将以下内容用于16位,但是由于12位值不会产生原始值,因此我无法弄清楚如何对其进行修改:

(calcMSB << 8) | (calcLSB & 0xff)

最佳答案

这里主要是16位和12位之间没有区别。
参见下面的伪代码:

calcLSB = value12bit & 0xFF; // get LSB byte
calcMSB = value12bit >> 8;    // shift bytes over LSB and take them

08-15 22:17