从C#传递位值
作者:互联网
我有一个具有公共属性“P”的C接口,它接受像5,6,7等位值.
它的文档说:“设置组类型的位掩码.位5表示’a’,位6表示’b’,等等.”
我在我的C#类中使用此接口,并且元数据中显示的此属性“P”的类型在VS.Net中是“char”.
如何从我的C#代码将6位和7位值传递给此属性?
请注意,如上所述,类型“char”的值应该从C#传递到此C接口,因为这是VS.net中元数据中显示的类型
请建议.
码:
从VS.Net IDE看到的C接口定义 –
[SuppressUnmanagedCodeSecurity]
[Guid("f274179c-6d8a-11d2-90fc-00806fa6792c")]
[InterfaceType(1)]
public interface IAccount
{
char GroupType { get; set; }
}
C#:
IAccount objAccount= new AccountClass();
((IAccount)objAccount).GroupType = ??//I need to pass char value here
谢谢.
解决方法:
C中的char类型总是8位,这可能意味着您在C#中使用byte来表示相同的东西. (这假设您的C平台使用标准的8位字节,因为C char定义为1字节,但C“字节”不一定保证为8位!)
byte b = 0;
b |= 1 << 5; // set bit 5 (assuming that the bit indices are 0-based)
b |= 1 << 6; // set bit 6 (assuming that the bit indices are 0-based)
如果这就是你需要做的事情,我不确定你如何将这个价值归还给你的C例程.
标签:bitmask,c,interop,c-2 来源: https://codeday.me/bug/20190826/1735111.html