c# 将 byte[*,*,*] 转换为 byte[]

标签 c# casting multidimensional-array

我有一个属性类型为 byte[,,*] 的对象

现在我想使用 System.Random::NextBytes() 来用随机值填充这个多维数组。 然而,NextBytes 采用 byte[] 的参数

我能否以某种方式将多维数组转换为一维数组,以便将其作为参数传递?

谢谢!

最佳答案

你不能转换它,但是你可以将值从普通的 byte[] 快速复制到 byte[,,] 使用 Buffer.BlockCopy。因此,您必须首先分配一个普通字节数组,然后将结果复制过来。

示例:

using System;

class Test
{
    static void Main()
    {
        Random rng = new Random();
        byte[,,] y = new byte[2,2,2];
        FillArray(y, rng);

        foreach (byte b in y)
        {
            Console.WriteLine(b);
        }
    }

    static void FillArray(byte[,,] array, Random rng)
    {
        byte[] tmp = new byte[array.Length];
        rng.NextBytes(tmp);
        Buffer.BlockCopy(tmp, 0, array, 0, tmp.Length);
    }
}

关于c# 将 byte[*,*,*] 转换为 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1371887/

相关文章:

c# - 如何使用 MVVM 绑定(bind)到不在我的模型中的数据

c# - 如何通过 PKCS#11 API 从 eToken 获取私钥?

C++:将对象转换为数组

c# - 为什么拆箱需要在 C# 中进行显式转换?

java - 2D 数组长度

Javascript 创建二维数组,以 ids 作为数组键

c# - 使 ListBox 项目具有与项目文本不同的值

c# - ASP.NET MVC 以分发包的形式部署

MySQL从十进制转换为字符串

ruby - 在多维嵌套数组上调用递归函数的问题