我试图了解更多关于 BCD、打包/解包字节数组和字节移位的信息,在这张图片中,我做了一个我不确定的指令示例,一个 5 字节的数组被压缩或打包成一个 4 字节的数组字节,反之亦然。它将
0x93, 0x87, 0xE3, 0xC3, 0x17
转换为 0xBC, 0x3C, 0x61, 0xD3
。谁能告诉我所使用的方法是否有通用术语,或者是否有关于此方法或类似方法的合适文档?
非常感谢
这很奇怪,并且一定来自某个深奥的系统,该系统正在实现该系统特有数据的字节数减少 20%(也许是通过慢速链路传输)。这不是通用的“压缩”方案。
为了方便起见,我们将 5 个原始字节中的每一个都标记为“A”到“E”,并从右到左(常规)从“0”到“7”对它们的位进行编号。
“压缩”只是从 5 个字节中的每个字节中删除一个或多个 MSB,然后将剩余位放入(假定的)32 位变量中。结果的低位对应于第一个字节“A”,然后“B”的位位于这些位的左侧,依此类推。
结果变量将包含(为了易读,使用零宽度管道):
E4E3E2E1E0|D6D5D4D3D2D1D0|C6C5C4C3C2C1C0|B6B5B4B3B2B1B0|A5A4A3A2A1A0
当一个人知道数据,并且需要一种快速的方法来减少 20% 的开销(存储或传输时间)时,这是一个合理的解决方案。