获取数组中的每个第n个字节/值

时间:2012-04-27 09:38:12

标签: c# bytearray

我正在寻找一种平滑/快速的方法来检索字节数组中的每个第n个短路并将其复制到新数组。

l = lowerbyte u = upperbyte

我的数据格式如下:  byte [] bytes = {a0l,a0u,b0l,b0u,c0l,...,n0l,n0l,a1l,a1u,b1l,...,nXl,nXu}

我需要的是得到长度为X的n个字节数组(例如,[0..X],b [0..X],...或M [a..n] [0 .. X])

我在考虑以下两个步骤:

  1. 将值转换为short(=> short [] shorts = {a0,b0,c0,... n0,a1,.. nX}) 通过使用像

    这样的东西
        short[] shorts= new short[(int)(Math.Ceiling(bytes.Length / 2.0)];
        Buffer.BlockCopy(bytes, 0, shorts, 0, bytes.Length);
    
  2. 从短裤中检索每秒的值

       I'm looking for some fast code here... something like blockcopy with skip
       I am completely aware that I could use a loop - but maybe there's a better
       solution to it as I need to do this task for 80MB/s...
    
  3. 将其转换回字节数组(相同 - 使用blockcopy)

        byte[] arrayX = new byte[shorts.Length * 2];
        Buffer.BlockCopy(shorts, 0, arrayX , 0, arrayX .Length);
    
  4. 非常感谢你!

1 个答案:

答案 0 :(得分:0)

我认为您可以将字节直接复制到新的字节数组,为每个短字计算出正确的偏移量。

将它全部转换为单独的短数组并返回字节数组是浪费时间IMO。