作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我能想到一些令人讨厌的低效方法来完成这项任务,但我想知道最好的方法是什么。
例如,我想复制一个字节中从第 3 位开始的 10 个字节,并像往常一样复制到一个指针。
有没有比一次复制一个移位字节更好的方法?
谢谢
最佳答案
一般的做法是尽可能高效地读取源缓冲区,并在写入目标缓冲区的途中根据需要移动它。
您不必执行字节操作,您始终可以通过在开头执行最多三个字节并类似地处理结尾来使源读取 long
对齐大部分操作因为您不应该尝试读取超过规定的源缓冲区长度。
根据读取的值,您可以根据需要进行移位以获得所需的位对齐并组装完成的字节以写入目标。您还可以对写入进行相同的优化,以达到尽可能宽的对齐字大小。
如果您在源代码中挖掘广泛使用可变宽度标记(zlib、MPEG、TIFF 和 JPEG 都跃然于脑海)的压缩工具或库,您可能会找到处理输入或输出缓冲区作为比特流,需要考虑一些实现思路。
关于c - 如何从不是字节对齐的源复制内存(移位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3738744/
我是一名优秀的程序员,十分优秀!