我目前面临一个我不知道如何避免它的问题。
我尝试处理可以是大端或小端的数据。这不是一个真正的问题,因为它总是以标头开头,因此我可以检查我必须使用哪种字节序模式,但是在解码值期间,有一些我不知道如何为大字节序数据实现的操作。
代码在小端(或以小端模式运行)的 nVidia Tegra(基于 ARMv7 架构的 Cortex-A9)上运行,但有时我会得到大端数据。
对数据的大多数操作并不是真正的问题,但我不知道如何正确添加..
Example: D5 1B EE 96 | 96 EE 1B D5
+ AC 84 F4 D5 | + D5 F4 84 AC
= 1 81 A0 E3 6B | = 1 6C E2 A0 81
如您所见,大多数字节在结果中已经是正确的,但有些不是。它们与预期结果相差 +1 或 -1,因为加法总是从右到左(小端机器)进行的,所以我们将进位(如果有的话)带到左边。
在这个小端机器上的大端加法的情况下,我必须从左到右添加并将进位(如果有的话)带到右边。
我现在的问题是,是否有可能(也许对处理器使用特殊指令?)得到正确的结果?也许我可以对结果进行进一步的操作,以消除这些 +1/-1 差异,这些差异比恢复操作数和结果“更便宜”?
最好的问候,托拜厄斯