用随机字节填充列表

时间:2017-08-30 15:07:55

标签: c# .net list random byte

我试图用随机字节填充缓冲区。缓冲区定义为字节列表。这是我想保留的东西。这是定义:

namespace NameofProject
{
    public partial class Form1 : Form
    {
    List<byte> buff = new List<byte>();
    }

}

我的第一次尝试是

public static void RandomFillBuffer()
{
   Random rnd = new Random();
   rnd.NextBytes(buff);
}

然而这给buff带来了这样的错误: 非静态字段,方法或属性需要对象引用&#39; Form1.buff&#39;

然后我删除了单词&#34; static&#34; (我不确定这是否属实)并且它变为&#34; public void RandomFillBuffer()&#34;,但这次我收到buff的这个错误: 参数1:无法转换为System.Collections.Generic.List&#39;到&#39; byte []&#39;

如果有意义的话,我会感谢任何解决2个错误的帮助。

3 个答案:

答案 0 :(得分:5)

您遇到了这个问题,因为NextBytes()需要一个数组,但您尝试传递List<>。解决问题的一种方法是将List<>更改为数组:

byte[] buff = new byte[someSize];

你将不得不弄清someSize应该是什么(这取决于你)。如果没有尺寸,你就无法填充。否则,怎么知道什么时候完成?

答案 1 :(得分:3)

你遇到的问题是NextBytes填充数组[]而不是列表。您需要定义一个索引大小为

的数组
    // Put random bytes into this array.
    byte[] array = new byte[8];
    // Fill array with random bytes.
    Random random = new Random();
    random.NextBytes(array);

答案 2 :(得分:1)

首先:您尝试创建方法static(这意味着此方法与对象的任何实例都没有关联,而是与对象类关联),并尝试从中引用非静态成员(您的static不是Form,因此与特定实例相关联,在您的情况下与Random.NextBytes(System.Byte[])相关联。 第二:您尝试使用System.Collections.Generics.List<System.Byte>但提供buff作为参数。

下面的代码应该适合您(此代码假设至少var generator = new Random(); var array = new Byte[buff.Count]; // create a local array of the same size as your list generator.NextBytes(array); // fill the array with random bytes buff = array.ToList(); // copy array to a new list and let field "buff" reference this freshly created list 已经有一些数据,因此长度为正):

$host     = 'localhost'; // for local machine

请注意,此代码不是最佳代码,因为它复制了一个数组。但我猜它会做你想要的。