我已经用C#封装了一个C++ API。该API使用表示程序设置的字节数组填充提供的内存位置。我需要得到位0来确定它的状态。这里是C++ API和使用文档:从字节数组获取第0位
DECL_FOOAPIDLL DWORD WINAPI FOO_GetVal(
VOID *Val, //pointer to memory where the data will be stored by the function
DWORD Len, //length of Val in bytes
DWORD Id //identification number of the parameter
);
这里是我的C#的包装和呼叫(我假设是正确的):
[DllImport(FOO_API, CharSet = CharSet.Auto)]
static public extern uint FOO_GetVal(IntPtr val, uint len, uint id);
IntPtr Ptr = Marshal.AllocHGlobal(5);
uint hr = NativeWrapper.FOO_GetVal(Ptr, 5, 1181);
var byteArray = new byte[5];
Marshal.Copy(Ptr, byteArray, 0, 5);
Marshal.FreeHGlobal(Ptr);
我如何获得第0位?
我已经试过(没有成功):
bool b = GetBit(bytearray[0],0);
private bool GetBit(byte b, int bitnum)
{
return (b & (1 << nitnum)) != 0;
}
[你有什么试过](http://whathaveyoutried.com)?获得第一个字节和位,它应该给你它的状态。 – Oded
请弄清楚一半的代码没有工作,并相应地编辑问题:你有编组的问题,或者你有问题得到一个特定的位给字节数组? –
究竟是什么我的问题状态...我需要bitarray bytearray [] ...编组工作正常,我不确定如何从字节数组中得到位0 .... – devHead