如何从源上复制内存而不是字节对齐(移位)

Ryu*_*Ryu 5 c memory memcpy

我可以想到一些令人讨厌的低效方法来完成这项任务,但我想知道最好的方法是什么.

例如,我想从一个字节的第3位开始复制10个字节,并像往常一样复制到指针.

有没有比一次复制一个移位字节更好的方法?

谢谢

RBe*_*eig 5

一般方法是尽可能有效地读取源缓冲区,并在编写目标缓冲区的过程中根据需要进行移位.

您不必进行字节操作,您始终可以long通过在开头最多执行三个字节来获取对齐大部分操作的源读取,并且类似地处理结束,因为您不应该尝试读取所述内容源缓冲区长度.

从读取的值中,您可以根据需要进行移位以获得所需的位对齐,并组合完成的字节以写入目标.您也可以对最宽的对齐字大小进行相同的写入优化.

如果你在源代码中挖掘广泛使用可变宽度令牌的压缩工具或库(zlib,MPEG,TIFF和JPEG都会想到),你可能会发现将输入或输出缓冲区视为的示例代码一个有一些实现思路要考虑的比特流.