编程语言
首页 > 编程语言> > 从C#传递位值

从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