我正在开发 C API 的 C++ CLI 包装器。C API 中的一个函数期望数据形式为:
void setData(byte* dataPtr, int offset, int length);
void getData(byte* buffer, int offset, int length);
对于 C++ CLI,建议我们使用 System.Collections.BitArray(是的,各个位有意义)。一个 BitArray 可以从一个字节数组构造并复制到一个:
array<System::Byte>^ bytes = gcnew array<System::Byte>(40);
System::Collections::BitArray^ ba = gcnew System::Collections::BitArray(bytes);
int length = ((ba->Length - 1)/8) +1;
array<System::Byte>^ newBytes = gcnew array<System::Byte>(length);
ba->CopyTo(newBytes, 0);
pin_ptr<unsigned char> rawDataPtr = &buffer[0];
我关心的是最后一行。以这种方式从数组中获取指针是否有效?C# 中是否有更好的选择来处理任意位?请记住,各个位是有意义的。