问题标签 [bitflags]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3065 浏览

python - Python:为文件设置多个属性(例如系统、隐藏)

使用 Python 设置多个文件属性的方法是什么?

例如,我想将文件的属性设置为 System、Hidden。

我可以使用类似下面的东西,但它只会设置一个属性,并覆盖之前的写入:

这将仅以 Hidden 属性结束。

如何同时设置这两个属性?谢谢。

0 投票
2 回答
104 浏览

c++ - 位标志被任意设置

我只学习了一个星期的 C++(和编程),所以这个问题可能缺乏对基本编程原理的理解,但这里什么都没有:

所以,我只设置了 3 个标志(选项 1、选项 2、选项 3)。现在,标志查询按预期工作(选项 1/2/3 返回 1,其余返回 0)直到选项 7/8。即使未设置 option7/8,该函数也会返回 1。这让我得出结论,unsigned char myflags 在二进制中看起来像这样:1100 0000。那么,

1)这里发生了什么?为什么 2 位已经在使用?首先如何使用 2 位的无符号字符?不应该只为有符号变量保留“最高”位吗?

2) 为什么我们使用按位赋值运算符 |= 来设置位标志,当它提供意外结果时。如果我们简单地分配 myflags = option3 | 选项2 | option3 它按预期工作 - option7/8 的查询返回 0。

(我很可能不知道我在说什么!)

0 投票
2 回答
2201 浏览

c# - C# Enum Flags - 角色编辑、查看、管理员

我这样定义我的角色:

  • 查看角色,只能查看
  • 编辑只能查看和编辑
  • 管理员可以做管理员的事情,编辑和查看

我在定义我的枚举时做错了吗?

0 投票
3 回答
7069 浏览

java - 遍历@IntDef、@StringDef 或任何@Def 类中的值

考虑这个类:

我经常创建这样的东西,并发现能够遍历MysteryFlags.

我可以遍历我设置的值MysteryFlags吗?

这是我尝试过的:


这打印ANNOTATION: @java.lang.annotation.Retention(value=SOURCE)


这使 NPE 进入空数组访问


这些没有打印出任何东西:


我知道我可以将值添加到一个数组并遍历它,但这需要存储另一个数组。这是我所做的,但仍然想知道是否有更好的方法。

0 投票
1 回答
49 浏览

vb.net - 如何获取不直接打印的打印机列表?

我需要一个不直接打印的打印机列表。获得一个可以直接打印的列表似乎相当容易。但是如何做相反的事情呢?

PrintServer.GetPrintQueues 方法

EnumeratedPrintQueueTypes 枚举

MSDN 说 EnumeratedPrintQueueTypes 有一个 FlagsAttribute 属性,它允许按位组合其成员值。所以我应该能够以某种方式指定不直接。我该怎么做?

我试图这样做,arrFlags(0) = Not System.Printing.EnumeratedPrintQueueTypes.DirectPrinting但没有返回任何结果。显然不正确。

那么如何操作 flags 属性来消除所有直接打印的打印机呢?

0 投票
1 回答
81 浏览

c++ - C 位标志不能被取消设置

我正在尝试在 C/C++ 中实现我自己对位标志的使用。我有三个函数:getBoolsetBoolprintBools。我当前的所有代码,除了一部分:我不能将位设置为假。他们设置为真就好了,他们读回就好了,但我不能将真位设置为假。这是我的代码:

此外,如果您想快速查看输出,这里有一个链接:cpp.sh/6gpu 谢谢您的帮助!

0 投票
1 回答
133 浏览

sql - 将位字段扩展到多行(有点连接)

假设我有一张这样的桌子:

还有一些数据,像这样:

如果 DayOfWeek 有多个标志,如何在 SELECT 语句中生成多行?

例如,这一行:

它将在 SELECT 语句中以 5 行表示(每一天/标志集一个)

对所有数据运行相同的查询会给我 19 行。

  • 7 行 - 每一天 (1, 2, 4, 8, 16, 32, 64)
  • 5 行 - 工作日 (62)
  • 7 行 - 每天 (127)

我不确定我该怎么做。我想我可以使用光标来做到这一点,但这是最好的选择吗?

谢谢。

0 投票
1 回答
33 浏览

.net - .NET 枚举和 BitFlags

[Enum]在我的页面中用作特殊模板列表的一部分..

为简单起见,这些[Enum]重新组合如下;

现在 – 当我选择 GROUP2 时:而不是给我 ITEM31/32/33/34(4 个项目),我得到 ITEM1/2/31/32/33(5 个项目)......。事实上,就位标志而言,它给了我 1,2、1073741824 和 -2147483648。

所以我有两个问题:

  • 每个带有 BitFlags 的 Enum 中可以有多少个元素?
  • 我假设Long它必须是 64 - 那么我怎样才能在我的列表中获得正确的“组”?

非常感谢您的回答。

弗雷德

0 投票
2 回答
470 浏览

c++ - C ++ Bitflaged枚举到字符串

当您将鼠标悬停在按位枚举(或称为)变量(在调试时)上时,我正在尝试通过获取枚举并将其转换为字符串来执行 Intellisense 在 Visual Studio 中所做的事情。

例如:

如果您将鼠标悬停在上方,yellow您会看到:

在此处输入图像描述

所以我希望能够调用类似的东西:

并打印输出:Green | Blue.

我写了以下内容,试图提供一种打印枚举的通用方法:

所以现在我可以打电话了:

我得到了想要的输出。

我猜我找不到任何关于它的信息,因为我不知道它是怎么称呼的,但无论如何 -

  1. std 或 boost 中有什么东西可以做到这一点或可以用来提供这个吗?

  2. 如果不是,那么做这种事情的最有效方法是什么?(或者我的就足够了)

0 投票
5 回答
3128 浏览

c++ - 如何在 C++ 中使用选项 true、false、default 和 toggle 实现标志?

我目前正在尝试想出一种聪明的方法来实现标志,除了通常的“true”和“false”之外,还包括状态“default”和(可选)“toggle”。

标志的一般问题是,一个人有一个功能,并希望通过传递某些参数来定义它的行为(“做某事”或“不做某事”)。

单旗

使用单个(布尔)标志,解决方案很简单:

在这里添加默认值特别容易,只需将函数更改为

并在没有标志参数的情况下调用它。

多个标志

一旦标志的数量增加,我通常看到和使用的解决方案是这样的:

这样做的好处是,您不需要为每个标志设置参数,这意味着用户可以设置他喜欢的标志,而忘记那些他不关心的标志。特别是你不会接到一个电话foo (/*args*/, true, false, true),比如你必须计算哪个真/假表示哪个标志。

这里的问题是:
如果你设置了一个默认参数,一旦用户指定了任何标志,它就会被覆盖。不可能像Flag1=true, Flag2=false, Flag3=default.

显然,如果我们想要 3 个选项(真、假、默认),我们需要为每个标志传递至少 2 位。因此,虽然它可能不是必需的,但我想任何实现都应该很容易使用第 4 状态来指示切换(=!默认)。

我有两种方法,但我对它们都不太满意:

方法 1:定义 2 个标志

到目前为止,我尝试使用这样的东西:

但是我不喜欢的是,每个标志都有两个不同的位。这导致“default-true”和“default-false”标志的代码不同,并导致必要的 if 而不是applyDefault().

方法 2:模板

通过定义这样的模板类:

我能够将其压缩apply成一个按位运算,在编译时除了 1 个参数之外的所有参数都是已知的。因此,使用直接编译(使用 gcc)到与 a 、或TFlag::applywill 相同的机器代码,这是非常有效的,但这意味着如果我想传递 a作为参数,我必须使用模板函数。继承并使用as 参数会增加虚函数调用的开销,但可以避免使用模板。return true;return false;return prev;return !prev;TFlagFlagconst Flag&

但是我不知道如何将其扩展到多个标志...

问题

所以问题是:如何在 C++ 中的单个参数中实现多个标志,以便用户可以轻松地将它们设置为“真”、“假”或“默认”(通过不设置特定标志)或(可选)表示“任何不是默认值”?

一个具有两个整数的类,使用类似的按位运算,如带有自己的按位运算符的模板方法吗?如果是这样,有没有办法让编译器选择在编译时执行大多数按位运算?

编辑澄清: 我不想将 4 个不同的标志“true”、“false”、“default”、“toggle”传递给函数。
例如,想象一个绘制的圆圈,其中标志用于“绘制边框”、“绘制中心”、“绘制填充颜色”、“模糊边框”、“让圆圈上下跳跃”、“做任何其他花哨的事情”你可以用圆圈做的事情”,....
对于每个“属性”,我想传递一个值为真、假、默认或切换的标志。因此,该函数可能会决定默认绘制边框、填充颜色和中心,但其余的都没有。一个电话,大致是这样的:

应该绘制边框(由标志指定),不绘制中心(由标志指定),模糊边框(标志说:不是默认值)并绘制填充颜色(未指定,但它的默认值)。
如果我后来决定不再默认绘制中心但默认模糊边界,调用应该绘制边界(由标志指定),不绘制中心(由标志指定),模糊边界(现在模糊是默认的,但我们不想要默认值)并绘制填充颜色(没有标志,但它是默认值)。