我定义了一个数组,
BYTE * pLine = new BYTE[1200];
现在我的目的是当对这个数组填充数据后,如何按照一定间隔取出全部数据,并填充到另一个指针指向的BYTE数组中呢? 另一个比较关心的问题是,有什么方法能够一次性取出N个字节的数据? 比如每隔20字节取10字节。 但我不想做10次循环来取。那样太没效率了。以上,请不吝赐教
BYTE * pLine = new BYTE[1200];
现在我的目的是当对这个数组填充数据后,如何按照一定间隔取出全部数据,并填充到另一个指针指向的BYTE数组中呢? 另一个比较关心的问题是,有什么方法能够一次性取出N个字节的数据? 比如每隔20字节取10字节。 但我不想做10次循环来取。那样太没效率了。以上,请不吝赐教
=========================
设置一个定时器进行处理。
每隔20字节取10字节
==============================
for(int ls=0;ls<1200;ls+=30)
{
char c[10];
memcpy(c,ls+20,10);
.......
}
for(int ls=0;ls<1200;ls+=30)
{
char c[10];
memcpy(c,p+ls+20,10);
.......
}
BYTE * pDst = new BYTE[1200];
int k = 0;
for(int i=20;i<1200;i+=30)
{
memcpy(&pDst[k],&pLine[i],10);
k += 10;
}
另一个比较关心的问题是,有什么方法能够一次性取出N个字节的数据? 比如每隔20字节取10字节。 但我不想做10次循环来取。那样太没效率了。你说的是 1 2 3 4 5 6 7 8 9 0
取出 1 2 5 6 9 0 这样的么( 每隔两个 取2字节?)你可以定义一个结构..结构里的成员的大小正好是你要取的大小加间隔数..即结构成员的起始位置就是你要取的值的 起始位置,然后把数组指针转换成结构指针一下 读取就可以了..只是个思路 还没严谨的思考.. LZ试试吧...这样就不用循环了..
2重循环 是因为执行的语句多 所以效率才没上来...这跟我们一般说什么
递归函数的效率差的概念是不一样的... 递归函数是浪费了CPU在大量的函数调用消耗上
所以说效率差.而2重循环就是一般的代码 没什么效率差的说法...前几楼给的 使用memcpy的代码都很好...我觉得没必要再改了...
安心的使用循环吧,它没浪费任何东西..
我前面提了个使用结构的做法,但后来想想,效率不会高于合理的使用循环..
复制的过程都是一样的 效率就肯定应该会是一样的.
再加上笨拙的移动,和分配结构,设计等等...效率反而更低了...
一般的循环是最好的.
一重循环加上memcpy()函数解决你的问题..