使用 c# 的 StrucLayout 和 FieldOffset 表示联合位域

2024-06-20

据我了解,为了在 C# 中表示联合,我需要使用 StructLayout[LayoutKind.Explicit)] 和 [FieldOffset(x)] 属性来指定联合内的字节偏移量。但是,我有一个想要表示的以下联合,并且 FieldOffset attrib 仅按字节大小偏移。

union _myUnion
{
     unsigned int info;
     struct
     {
          unsigned int flag1:1 // bit 0
          unsigned int flag2:1 // bit 1
          unsigned int flag3:1 // bit 2
          unsigned int flag4:1 // bit 3
          unsigned int flag5:1 // bit 4
          unsigned int flag6:1 // bit 5
          .
          .
          .
          unsigned int flag31:1 // bit 31
     }
}

正如您所看到的联合中的内部结构,我无法使用 FieldOffset,因为我需要可以稍微偏移的东西。

有针对这个的解决方法吗?我试图调用一个 DLL 函数,并且其中一个数据结构是这样定义的,但我对如何最好地表示这个联合结构没有想法。


那里不需要工会;数据的一个字段+属性,8个执行按位“移位”操作的属性,例如:

public uint Value {get;set;}

public uint Flag2 {
   get { return Value >> 2; }
}

等等。我还以为你想要 bool 在这里?

通常我会说:不要创建可变结构。调用may(我不确定)是一个有效的场景,所以我会忽略它:)

如果该值确实使用超过 32 位,请考虑将支持字段切换为 ulong。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 c# 的 StrucLayout 和 FieldOffset 表示联合位域 的相关文章

随机推荐

  • type_info 的 std::is_convertible

    在 C 11 中 可以通过以下方式确定类型 A 的变量是否可以隐式转换为类型 B using std is convertible
  • 获取微过滤器驱动程序中的文件路径

    我使用了下面的代码 但它给了我文件路径的结果 status FltGetFileNameInformation Data FLT FILE NAME OPENED FLT FILE NAME QUERY ALWAYS ALLOW CACHE
  • Flexbox 不适用于 iPad 和 Safari [重复]

    这个问题在这里已经有答案了 我在网站上使用 Flexbox 但它在 iPad Air iPad 3 和 Safari PC 上崩溃 设计和代码与此 codepen 类似 http codepen io anon pen xwJzEg htt
  • 您会认为这是单例/单例模式吗?

    想象一下 在 Global asax cs 文件中 我有一个实例类作为私有字段 我们这样说 private MyClass myClass new MyClass 我在 Global 上有一个名为 GetMyClass 的静态方法 它获取当
  • 如何清除浏览器的缓存?

    当我在 Facebook 上玩应用程序且游戏未加载时 会出现提示 要求清除浏览器缓存 如何清除浏览器的缓存 似乎还没有人提到这一点 所以我想我应该插话一下 当你在 Chrome 中打开页面检查器时 你可以右键单击重新加载页面图标将与菜单一起
  • JQuery hide() 和 fadeOut() 、 show() 和 fadeIn() 之间的区别

    我是 jQuery 新手 目前 我正在我的跨平台移动应用程序之一中使用 jQuery 我需要根据各自的条件隐藏和显示我的一些页面内容 我发现以下两种方法对我来说效果很好 myControlId fadeOut myControlId hid
  • 使用递归返回嵌套列表中第二小的数字

    我必须归还第二小的使用递归的 python 列表中的数字 以及no loops 我所做的是创建一个辅助函数 它返回列表中 最小 第二小的 值的元组 然后我只取tuple 1 in my second smallest func def s
  • 检测 Angular 项目中的浏览器刷新

    我想使用我的路由器来检测页面何时刷新单页应用程序 https en wikipedia org wiki Single page application 角度项目 还有其他方法吗 In the 组件 ts file import Subsc
  • ESLint 关闭分号规则

    当我搜索关闭分号时 我得到 semi 0或类似的 我尝试将其放入 但我的 linter 仍然在行上添加了分号 下面是我的 eslintrc 我很困惑哪条规则放置了分号 parserOptions ecmaVersion 8 ecmaFeat
  • 允许在 conda env 中使用系统 python?

    有没有办法强制 conda 在给定环境中使用 python 的系统版本 以及所有系统库 我在 shell 中默认启用了 conda 这可能会有点烦人 因为如果我尝试运行系统 python 应用程序 它会获得与预期不同的 python 版本
  • R:表格格式

    我有一个包含以下列的 Excel 文件 Column1 Column2 Column3 ab bb 0 5 ab bc 0 1 ab cd 0 7 ab dd 0 8 ac bb 0 2 ac bg 0 8 ac ee 0 8 ac dd
  • 结构中的内存布局差异

    我在 C 中有以下结构 struct A int a double b float c 该结构与添加了函数的结构之间的内存布局是否存在差异 struct B int a double b float c void foo B foo do
  • ios7 故事板项目不会移动

    我试图在我的视图控制器布局中移动故事板项目 但是当在模拟器中运行时 它们不会移动 它们似乎粘在我放置它们的上方的橙色虚线上 那些橙色线是什么 为什么我无法移动我的物品 Here s what it looks like in the sim
  • 使用不同的结构体定义来模拟 C 中的公共和私有字段

    我已经编写 C 语言相当长的时间了 并且显然知道 C 不支持结构中显式的私有和公共字段 然而 我 相信 我已经找到了一种相对干净的方法来实现这一点 而无需使用任何宏或巫术 并且我希望更深入地了解我可能忽略的可能问题 文件夹结构在这里并不是那
  • 您总是在发布后重定向吗?如果是,您如何管理?

    假设您正在提交一个表单 这会影响您的数据库 添加记录 删除记录 更新记录 您的请求如下所示 POST 应用程序 操作 更新 现在 假设您已完成更新 因此您希望将用户带到主页 Response sendRedirect application
  • 为什么你需要创建这些 json 读/写,而在 java 中你不需要创建这些 json 读/写?

    如果我错了 请纠正我 但是当使用 Java 和 Spring MVC 时 您不必创建这些额外的类来将 Java 类映射到 JSON 以及将 JSON 映射到类 为什么必须在 Play with Scala 中执行此操作 和Scala有关系吗
  • git merge --squash 和 gitcherry-pick 有什么区别?

    如果我在标准的主功能工作流程中工作 那么将功能分支压缩到主功能分支和将其挑选到主功能分支之间有什么区别 分支示例 m1 m2 master f1 f2 feature 我认为两者都有相同的输出 即 m1 m2 m3 master f1 f2
  • tsconfig.json 中模块类型的区别

    在 tsconfig json 中 compilerOptions target es5 module commonjs moduleResolution node sourceMap true emitDecoratorMetadata
  • module_init() 与 core_initcall() 与 Early_initcall()

    在驱动程序中 我经常看到使用这三种类型的初始化函数 module init core initcall early initcall 在什么情况下我应该使用它们 另外 还有其他的初始化方式吗 它们决定内置模块的初始化顺序 司机们会使用dev
  • 使用 c# 的 StrucLayout 和 FieldOffset 表示联合位域

    据我了解 为了在 C 中表示联合 我需要使用 StructLayout LayoutKind Explicit 和 FieldOffset x 属性来指定联合内的字节偏移量 但是 我有一个想要表示的以下联合 并且 FieldOffset a