问题标签 [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.
python - Python:为文件设置多个属性(例如系统、隐藏)
使用 Python 设置多个文件属性的方法是什么?
例如,我想将文件的属性设置为 System、Hidden。
我可以使用类似下面的东西,但它只会设置一个属性,并覆盖之前的写入:
这将仅以 Hidden 属性结束。
如何同时设置这两个属性?谢谢。
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。
(我很可能不知道我在说什么!)
c# - C# Enum Flags - 角色编辑、查看、管理员
我这样定义我的角色:
- 查看角色,只能查看
- 编辑只能查看和编辑
- 管理员可以做管理员的事情,编辑和查看
我在定义我的枚举时做错了吗?
java - 遍历@IntDef、@StringDef 或任何@Def 类中的值
考虑这个类:
我经常创建这样的东西,并发现能够遍历MysteryFlags
.
我可以遍历我设置的值MysteryFlags
吗?
这是我尝试过的:
这打印ANNOTATION: @java.lang.annotation.Retention(value=SOURCE)
:
这使 NPE 进入空数组访问
这些没有打印出任何东西:
和
我知道我可以将值添加到一个数组并遍历它,但这需要存储另一个数组。这是我所做的,但仍然想知道是否有更好的方法。
vb.net - 如何获取不直接打印的打印机列表?
我需要一个不直接打印的打印机列表。获得一个可以直接打印的列表似乎相当容易。但是如何做相反的事情呢?
MSDN 说 EnumeratedPrintQueueTypes 有一个 FlagsAttribute 属性,它允许按位组合其成员值。所以我应该能够以某种方式指定不直接。我该怎么做?
我试图这样做,arrFlags(0) = Not System.Printing.EnumeratedPrintQueueTypes.DirectPrinting
但没有返回任何结果。显然不正确。
那么如何操作 flags 属性来消除所有直接打印的打印机呢?
c++ - C 位标志不能被取消设置
我正在尝试在 C/C++ 中实现我自己对位标志的使用。我有三个函数:getBool
、setBool
和printBools
。我当前的所有代码,除了一部分:我不能将位设置为假。他们设置为真就好了,他们读回就好了,但我不能将真位设置为假。这是我的代码:
此外,如果您想快速查看输出,这里有一个链接:cpp.sh/6gpu 谢谢您的帮助!
sql - 将位字段扩展到多行(有点连接)
假设我有一张这样的桌子:
还有一些数据,像这样:
如果 DayOfWeek 有多个标志,如何在 SELECT 语句中生成多行?
例如,这一行:
它将在 SELECT 语句中以 5 行表示(每一天/标志集一个)
对所有数据运行相同的查询会给我 19 行。
- 7 行 - 每一天 (1, 2, 4, 8, 16, 32, 64)
- 5 行 - 工作日 (62)
- 7 行 - 每天 (127)
我不确定我该怎么做。我想我可以使用光标来做到这一点,但这是最好的选择吗?
谢谢。
.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 - 那么我怎样才能在我的列表中获得正确的“组”?
非常感谢您的回答。
弗雷德
c++ - C ++ Bitflaged枚举到字符串
当您将鼠标悬停在按位枚举(或称为)变量(在调试时)上时,我正在尝试通过获取枚举并将其转换为字符串来执行 Intellisense 在 Visual Studio 中所做的事情。
例如:
如果您将鼠标悬停在上方,yellow
您会看到:
所以我希望能够调用类似的东西:
并打印输出:Green | Blue
.
我写了以下内容,试图提供一种打印枚举的通用方法:
所以现在我可以打电话了:
我得到了想要的输出。
我猜我找不到任何关于它的信息,因为我不知道它是怎么称呼的,但无论如何 -
std 或 boost 中有什么东西可以做到这一点或可以用来提供这个吗?
如果不是,那么做这种事情的最有效方法是什么?(或者我的就足够了)
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::apply
will 相同的机器代码,这是非常有效的,但这意味着如果我想传递 a作为参数,我必须使用模板函数。继承并使用as 参数会增加虚函数调用的开销,但可以避免使用模板。return true;
return false;
return prev;
return !prev;
TFlag
Flag
const Flag&
但是我不知道如何将其扩展到多个标志...
问题
所以问题是:如何在 C++ 中的单个参数中实现多个标志,以便用户可以轻松地将它们设置为“真”、“假”或“默认”(通过不设置特定标志)或(可选)表示“任何不是默认值”?
一个具有两个整数的类,使用类似的按位运算,如带有自己的按位运算符的模板方法吗?如果是这样,有没有办法让编译器选择在编译时执行大多数按位运算?
编辑澄清:
我不想将 4 个不同的标志“true”、“false”、“default”、“toggle”传递给函数。
例如,想象一个绘制的圆圈,其中标志用于“绘制边框”、“绘制中心”、“绘制填充颜色”、“模糊边框”、“让圆圈上下跳跃”、“做任何其他花哨的事情”你可以用圆圈做的事情”,....
对于每个“属性”,我想传递一个值为真、假、默认或切换的标志。因此,该函数可能会决定默认绘制边框、填充颜色和中心,但其余的都没有。一个电话,大致是这样的:
应该绘制边框(由标志指定),不绘制中心(由标志指定),模糊边框(标志说:不是默认值)并绘制填充颜色(未指定,但它的默认值)。
如果我后来决定不再默认绘制中心但默认模糊边界,调用应该绘制边界(由标志指定),不绘制中心(由标志指定),不模糊边界(现在模糊是默认的,但我们不想要默认值)并绘制填充颜色(没有标志,但它是默认值)。