[英]Get Bit 0 from Byte array
我在C#中包装了C ++ API。 此API用表示程序设置的字节数组填充提供的内存位置。 我需要获取位0才能确定其状态。 这是C ++ API和用法文档:
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;
}
您在寻找最高有效位还是最低有效位?
通常首先是指一个字节中的最高有效位,而您得到的是最低有效位。
尝试GetBit(bytearray[0],7)
我所有的代码都是正确的... API供应商为我提供了不正确的ID参数(第三个值)...我很感谢所有注释以及我对Guvante解释的从最低到最高有效位的新理解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.