我定义了一个数组,
BYTE * pLine = new BYTE[1200];
现在我的目的是当对这个数组填充数据后,如何按照一定间隔取出全部数据,并填充到另一个指针指向的BYTE数组中呢? 另一个比较关心的问题是,有什么方法能够一次性取出N个字节的数据? 比如每隔20字节取10字节。 但我不想做10次循环来取。那样太没效率了。以上,请不吝赐教

解决方案 »

  1.   

    按照一定间隔取出全部数据
    =========================
    设置一个定时器进行处理。
    每隔20字节取10字节
    ==============================
    for(int ls=0;ls<1200;ls+=30)
    {
        char c[10];
        memcpy(c,ls+20,10);
        .......
    }
      

  2.   

    上面写错了一点:
    for(int ls=0;ls<1200;ls+=30)
    {
        char c[10];
        memcpy(c,p+ls+20,10);
        .......
    }
      

  3.   

    BYTE * pLine = new BYTE[1200];
    BYTE * pDst = new BYTE[1200];
    int k = 0;
    for(int i=20;i<1200;i+=30)
    {
        memcpy(&pDst[k],&pLine[i],10);
        k += 10;
    }
      

  4.   

    现在我的目的是当对这个数组填充数据后,如何按照一定间隔取出全部数据,并填充到另一个指针指向的BYTE数组中呢? 没看懂,既然有间隔了..怎么取出所有数据???
    另一个比较关心的问题是,有什么方法能够一次性取出N个字节的数据? 比如每隔20字节取10字节。 但我不想做10次循环来取。那样太没效率了。你说的是  1 2 3 4 5 6 7 8 9 0
    取出 1 2  5 6  9 0  这样的么( 每隔两个 取2字节?)你可以定义一个结构..结构里的成员的大小正好是你要取的大小加间隔数..即结构成员的起始位置就是你要取的值的 起始位置,然后把数组指针转换成结构指针一下 读取就可以了..只是个思路 还没严谨的思考..  LZ试试吧...这样就不用循环了..
      

  5.   

    谢谢大家的回复,我是新手,很多地方需要你们的指点现在我把问题进一步 ,如果我打算从一个BYTE数组中每次取出(依次,无间隔)20个字节,然后按照40个字节的间隔填充到另一个BYTE数组中,该如何做?
      

  6.   

    写了几行代码 又全删除了...没什么好写的..就是一般复制copy用循环的话就是个二重嵌套循环,效率怎么能高的了?这句话是不正确的...
    2重循环 是因为执行的语句多  所以效率才没上来...这跟我们一般说什么
    递归函数的效率差的概念是不一样的... 递归函数是浪费了CPU在大量的函数调用消耗上
     所以说效率差.而2重循环就是一般的代码 没什么效率差的说法...前几楼给的 使用memcpy的代码都很好...我觉得没必要再改了...
    安心的使用循环吧,它没浪费任何东西..
    我前面提了个使用结构的做法,但后来想想,效率不会高于合理的使用循环.. 
    复制的过程都是一样的 效率就肯定应该会是一样的.
    再加上笨拙的移动,和分配结构,设计等等...效率反而更低了...
    一般的循环是最好的.
    一重循环加上memcpy()函数解决你的问题..