如何在现有字节数组的开头添加一个字节?我的目标是使数组长3个字节到4个字节.所以这就是为什么我需要在它的开头添加00填充.
Guf*_*ffa 44
你不能这样做.无法调整阵列大小.您必须创建一个新数组并将数据复制到它:
bArray = addByteToArray(bArray, newByte);
Run Code Online (Sandbox Code Playgroud)
码:
public byte[] addByteToArray(byte[] bArray, byte newByte)
{
byte[] newArray = new byte[bArray.Length + 1];
bArray.CopyTo(newArray, 1);
newArray[0] = newByte;
return newArray;
}
Run Code Online (Sandbox Code Playgroud)
Tyl*_*zes 15
正如这里的许多人所指出的那样,C#中的数组以及大多数其他常见语言中的数组都是静态大小的.(!和类型)如果你正在寻找的东西更像是PHP的数组,我只是去猜测你,因为它是一个流行的语言与动态大小的数组,你应该使用ArrayList:
var mahByteArray = new ArrayList<byte>();
Run Code Online (Sandbox Code Playgroud)
如果您有其他地方的字节数组,则可以使用AddRange函数.
mahByteArray.AddRange(mahOldByteArray);
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用Add()和Insert()来添加元素.
mahByteArray.Add(0x00); // Adds 0x00 to the end.
mahByteArray.Insert(0, 0xCA) // Adds 0xCA to the beginning.
Run Code Online (Sandbox Code Playgroud)
需要回到阵列中吗?.ToArray()让你满意!
mahOldByteArray = mahByteArray.ToArray();
Run Code Online (Sandbox Code Playgroud)
数组无法调整大小,因此您需要分配一个更大的新数组,在其开头写入新字节,并使用Buffer.BlockCopy传输旧数组的内容.
为了防止每次重新复制数组效率不高
怎么样使用Stack
csharp> var i = new Stack<byte>();
csharp> i.Push(1);
csharp> i.Push(2);
csharp> i.Push(3);
csharp> i; { 3, 2, 1 }
csharp> foreach(var x in i) {
> Console.WriteLine(x);
> }
Run Code Online (Sandbox Code Playgroud)
3 2 1