How to create a byte[] of unknown size in C#?

Fop*_*ega 4 c#

I'm trying to create a byte[] given some unknown amount of bytes. Here's an example:

ArrayList al = new ArrayList();
al.Add(0xCA);
al.Add(0x04);
byte[] test = (byte[])al.ToArray(typeof(byte));
Run Code Online (Sandbox Code Playgroud)

I'm receiving an error that one or more of the values in the array cannot be converted to a byte. What am I doing wrong here?

Thanks

Ste*_*ham 11

尝试List<byte>然后使用ToArray

  • 不,通用列表只允许您添加通用类型,并且如果它们足够小,则0x数字可以隐式地转换为较低类型(比它们的默认Int32). (2认同)

Bri*_*ian 9

要么使用泛型集合而不ArrayList是非泛型集合,要么确保实际使用字节.0xCA是一个int,而不是一个byte.

        ArrayList al = new ArrayList();
        al.Add((byte)0xCA);
        al.Add((byte)0x04);
        byte[] test = (byte[])al.ToArray(typeof(byte));
Run Code Online (Sandbox Code Playgroud)

  • 不,0x只是使它成为十六进制整数,任何低于8位的0x数字都被认为是Int32(但如果位数分别低于2/4,则可隐式地转换为byte/short) (2认同)