1

C API の C++ CLI ラッパーに取り組んでいます。C API の 1 つの関数では、次の形式のデータが必要です。

void setData(byte* dataPtr, int offset, int length);
void getData(byte* buffer, int offset, int length);

C++ CLI の場合、System.Collections.BitArray を使用することが提案されました (はい、個々のビットには意味があります)。BitArray は、バイトの配列から構築し、1 つにコピーできます。

  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# のより良い代替手段はありますか? 個々のビットには意味があることに注意してください。

4

1 に答える 1