我试图用随机字节填充缓冲区。缓冲区定义为字节列表。这是我想保留的东西。这是定义:
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个错误的帮助。
答案 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
请注意,此代码不是最佳代码,因为它复制了一个数组。但我猜它会做你想要的。