C#将数据添加到数组中?

时间:2011-07-08 21:26:58

标签: c# arrays

下面的代码读取文件偏移量并将十六进制值写入“MyGlobals.Hexbytes”变量....我怎样才能将其写入数组呢?

非常感谢

MyGlobals.Mapsettings_filepath = "C:\\123.cfg";

///////////////////////////// Read in the selected //////////////

BinaryReader br = new BinaryReader(File.OpenRead(MyGlobals.Mapsettings_filepath),
System.Text.Encoding.BigEndianUnicode);

for (int a = 32; a <= 36; a++)
{
    br.BaseStream.Position = a;
    MyGlobals.Hexbytes += br.ReadByte().ToString("X2") + ",";
}

4 个答案:

答案 0 :(得分:1)

MyGlobals.Hexbytes成为List<string>,然后:

br.BaseStream.Position = a;
MyGlobals.Hexbytes.Add(br.ReadByte().ToString("X2"));

稍后要显示它,请使用String.Join,如下所示:

string myBytes = string.Join(",", MyGlobals.Hexbytes.ToArray());

答案 1 :(得分:1)

Array是固定大小的结构,因此您无法向其中添加元素。

如果您事先知道大小(在您的示例中看起来如此),您可以实例化它,然后将元素添加到预先分配的插槽中:

e.g。

string[] byteStrings = new string[5]; // 36 - 32 + 1 = 5 

for (int a = 32; a <= 36; a++)
{
   br.BaseStream.Position = a;
   byteStrings[a - 32] = br.ReadByte().ToString("X2");
}

但使用动态可调整大小的集合要轻松得多,例如List<T>

var byteStrings = new List<string>();
for (int a = 32; a <= 36; a++)
{
   br.BaseStream.Position = a;
   byteStrings.Add(br.ReadByte().ToString("X2"));
}

答案 2 :(得分:0)

您应首先定义数组的大小,因此您应首先设置其大小,然后填充它:

string[] array = new string[5];

for (int a = 32; a <= 36; a++)
{
    br.BaseStream.Position = a;
    array[a - 32] += br.ReadByte().ToString("X2");
}

以下是如何一次读取4个字节:

            BinaryReader reader = ....;
...
            byte[] buffer = new byte[4];
            reader.Read(buffer, 0, 4);

...

答案 3 :(得分:0)

假设可能是MyGlobals.Hexbytes,您可以按原样保留代码并最终添加:

var myarray = MyGlobals.Hexbytes.Split(',');

myarray是一个字符串数组。