c# - qt 到 c# : operator mean within struct 是什么

标签 c# c++ c bit-fields

我有一段代码试图从旧的 qt 文件转换为 C#,但我有点不清楚下面的 union 中的结构中发生了什么。我不确定“:”是做什么的...我猜它设置了大小但找不到任何关于此的文档。此外,由于 C# 没有 union ,转换此类内容的最佳做法是什么。谢谢

union uAWord
{
   uAWord()
     : m_AWord(0) {}

    struct sBcdAWord
    {
      quint32 m_O  :8;
      quint32 m_S  :2;
      quint32 m_D  :18;
      quint32 m_SS :3;
      quint32 m_P  :1;
    }
    sBcdAWord m_F;
    quint32 m_AWord;
}

最佳答案

这就是所谓的位域。 sBcdWord 部分是一个 32 位的字,每个字段是该字的一部分,分别占 8,2,18,3,1 BIT: 所以word排版如下:

  • Bit0-Bit7 m_0
  • Bit8-Bit9 m_S
  • Bit10-Bit27 m_D
  • Bit28-Bit30 m_ss
  • Bit31 m_P

如何在 C# 中移植此代码取决于您是否正在移植代码,或者您是否需要 PInvoke。对于 PInvoke,最好的解决方案可能是将 sBcdAWord 映射为 Unit32,并创建一些访问器策略来屏蔽读写。如果是代码移植,除非有特殊的内存使用节省需求,否则使用分离属性会很好。

关于c# - qt 到 c# : operator mean within struct 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5304635/

相关文章:

c# - 无法在电子邮件模板中正确显示字体和图像

c++ - gdb 从哪里获取代码行?

c++ - 如何使用新语法 QT5 将信号连接到信号?

C++成员函数指针和STL算法

c - 类型转换,c语言问题

c# - 在 C# 中格式化打印文档

c# - 垃圾收集器在收集可访问对象的实例属性或字段时的行为不明确

c# - 在 C# 中,我有一个指向 WIN32 WndProc 的 IntPtr。调用它的语法是什么?

c - scanf 格式字符串需要类型参数

c - 在 main 中使用头文件中的结构(在 C 中)