从byte *转换为byte []

时间:2010-07-13 21:33:14

标签: c#

如何将指针转换为字节数组?

第一个字节表示要遵循的字节数。

2 个答案:

答案 0 :(得分:7)

安全的做法是对指向的数据进行复制

如果您有一个字节*,那么您当然可以自己编写代码:

byte* source = whatever;
int size = source[0]; // first byte is size;
byte[] target = new byte[size];
for (int i = 0; i < size; ++i)
    target[i] = source[i+1];

轻松自负。

如果您使用IntPtr而不是字节*,那么您可以使用这种有用的方法:

http://msdn.microsoft.com/en-us/library/ms146631.aspx

Marshal课上有很多有用的方法。

答案 1 :(得分:3)

好吧,byte* 不是数组对象。您可以获取数据的地址(使用fixed等),但的任意byte*作为数据的开始 - 例如,它可能在偏移17处。

所以我建议:

  • 传递byte[]而不是
  • (或)创建 byte[]copy over您想要的数据