C#重整形数组1-> 2 D,无需复制数据

亨里克123

我正在使用相机制造商的C#SDK。他们有一个方法:

CaptureImage(struct ExpSettings, ref ushort[] pixelbuffer)

我希望将一维数组的像素缓冲区重塑为2D数组。现在,我正在Buffer.BlockCopy按照乔恩·斯凯特(Jon Skeet)的建议在类似SO的问题上使用。

但是我在考虑是否有一种方法(在C#中)而不必复制实际数据。在CI中,您可以例如使用工会。

您能以某种方式创建一个数组UInt16[,] My2DImageData = new UInt[1000, 1000],然后将数据数组“指向”上面的像素缓冲区吗?

感谢您的时间。亲切的问候/ Henrik

二代子

如果您只想通过索引器访问成员,并且不想重复数据,则可以使用包装器类。

class ArrayWrapper<T>
{
    private readonly T[] _arr;
    private readonly int _w, _h;
    public ArrayWrapper(T[] arr, int w, int h)
    {
        if(arr == null)
            throw new ArgumentNullException("arr");

        if(arr.Length != w*h)
            throw new ArgumentException("Invalid array length", "arr");

        _arr = arr;
        _w = w;
        _h = h;
    }

    public T this[int i, int j]
    {
        get { return _arr[i*_w + j]; }
    }
}

var arr = new[] {
    0,  1,  2,  3, 
    4,  5,  6,  7, 
    8,  9,  10, 11, 
    12, 13, 14, 15 };
var wrapper = new ArrayWrapper<int>(arr, 4, 4);
Console.WriteLine(wrapper[1, 1]); // prints 5

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在熊猫2D数据框中复制Numpy 2D数组

来自分类Dev

在C#中复制2D数组

来自分类Dev

重整形数据框,不包含“ timevar”和从长格式到宽格式的多个值列

来自分类Dev

脾气暴躁:将1D数组作为2D数组而不进行整形

来自分类Dev

复制2D数组C ++

来自分类Dev

如何在C#中将2-D数组快速转换为1-D数组?

来自分类Dev

使用memcpy复制2D数组?

来自分类Dev

在C#中将AES数据矩阵的单维数组转换为2D数组

来自分类Dev

重组/整形数据框(r)

来自分类Dev

ggplot:为散点图整形数据

来自分类Dev

如何使用C ++将2D矩阵的元素垂直复制到1D数组

来自分类Dev

R:基于单列因子将每2行数据重整为1行

来自分类Dev

C ++ 2D数组到1D数组

来自分类Dev

在C#中将数据检索到2D数组中

来自分类Dev

将数组的Numpy数组整形为1D

来自分类Dev

将Excel中的表格从工作表1复制到工作表2,而无需剪切和粘贴

来自分类Dev

在Python中使用重整形来重整数组

来自分类Dev

替代C#中的2D数组

来自分类Dev

2D数组不会应答C#

来自分类Dev

C#将2D数组包装到Sphere

来自分类Dev

启动程序C#后创建2D数组

来自分类Dev

C#打印2D数组打印拆分

来自分类Dev

在C#中乘以2D数组

来自分类Dev

StreamReader 到数组 2d C#

来自分类Dev

在JavaScript中绘制/更新2D正方形数组颜色的快速方法

来自分类Dev

将每个字符串从2D数组复制到1D数组

来自分类Dev

为什么在C中逐列复制2D数组要比逐行花费更长的时间?

来自分类Dev

2D数组数据为空?

来自分类Dev

Visual C#如何将两个1D string []数组合并为一个2D string [,]数组