我需要在将一个数组复制到另一个数组时高效地交换字节顺序。
源数组是某种类型的; char,short或int,因此所需的字节交换是明确的,并且将根据该类型进行。
我的计划是使用多遍逐字节复制(2个用于short,4个用于int等)来实现这一点。但是是否有任何现有的“memcpy_swap_16/32/64”函数或库?也许在BGR / RGB图像处理中存在。
编辑
我知道如何交换单个值的字节,这不是问题。我想在我将要执行的复制过程中完成此过程。
例如,如果我有一个小端4字节整数数组,我可以通过执行初始偏移量为0、1、2和3,步幅为4的4次逐字节复制来完成它们的交换。但可能有更好的方法,甚至读取每个4字节整数并使用字节交换内置函数_byteswap_ushort,_byteswap_ulong和_byteswap_uint64会更快。但我怀疑必须存在执行此类处理的现有函数。
编辑2
我刚刚发现了这个链接,它可能是SSE的有用基础,尽管内存带宽可能使其浪费时间。
xchg %ah,%al
。您声称它无法优化的情况是什么? - R.. GitHub STOP HELPING ICE