问题标签 [bit]

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 投票
9 回答
40018 浏览

c# - 打开枚举(带有标志属性)而不声明所有可能的组合?

我如何打开一个设置了 flags 属性的枚举(或者更准确地说是用于位操作)?

我希望能够在与声明的值匹配的开关中命中所有情况。

问题是,如果我有以下枚举

我想使用这样的开关

如果“theCheckType”同时设置为 CheckType.Form | CheckType.TempData 我希望它同时满足两种情况。显然,由于中断,它不会在我的示例中同时命中,但除此之外它也会失败,因为 CheckType.Form 不等于 CheckType.Form | CheckType.TempData

那么,我可以看到的唯一解决方案是为枚举值的每种可能组合提供一个案例?

就像是

但这真的不是很理想(因为它会很快变得很大)

现在我有 3 个 If 条件紧随其后

就像是

但这也意味着,如果我有一个具有 20 个值的枚举,它必须每次都通过 20 个 If 条件,而不是像使用开关时那样“跳转”到仅需要的“case”/。

有没有什么神奇的方法可以解决这个问题?

我已经想到了遍历声明的值然后使用开关的可能性,然后它只会为每个声明的值点击开关,但我不知道它将如何工作以及它的性能是否是一个好主意(与很多 if 相比)?

有没有一种简单的方法可以遍历所有声明的枚举值?

我只能想出使用 ToString() 并用“,”分割,然后遍历数组并解析每个字符串。


更新:

我发现我解释得不够好。我的例子很简单(试图简化我的场景)。

我将它用于 Asp.net MVC 中的 ActionMethodSelectorAttribute 以确定在解析 url/路由时方法是否可用。

我通过在方法上声明这样的东西来做到这一点

这意味着它应该检查 Form 或 TempData 是否具有为可用的方法指定的键。

它将调用的方法(我之前的示例中的 doSomething()、doSomethingElse() 和 doWhatever())实际上将 bool 作为返回值,并将使用参数调用(不共享接口的不同集合可以是使用 - 请参阅下面链接中的示例代码等)。

为了希望更好地了解我在做什么,我粘贴了一个简单的例子,说明我在 pastebin 上实际做了什么——可以在这里找到http://pastebin.com/m478cc2b8

0 投票
8 回答
23100 浏览

sql - sql 查询 - true => true, false => true or false

简单的查询,可能不可能,但我知道那里有一些聪明的人 :)

给定一个布尔参数,我希望定义我的 where 子句来限制某个列的输出 - 或者什么都不做。

因此,给定参数 @bit = 1 这将是结果:

其中列 = 1

给定参数 @bit = 0 这将是结果:

其中列 = 1 或 0

即没有效果/显示所有结果(列是位字段)

我不想要动态 sql - 我可以解决在代码中解决这个问题,但我只是想知道是否有一些聪明的魔法可以使上述内容变得整洁和简单。

在那儿?我正在使用 sql 服务器。

欢呼:D

0 投票
6 回答
348 浏览

c - 这行代码有什么作用?

对这段代码的作用感到困惑

特别是这个“ N_half>>=1 ”

谢谢

0 投票
8 回答
112277 浏览

sql - 在 SQL Server 中使用常量 1 或 0 隐含位

在 select 语句中用作字段值时,是否可以将 1 或 0 表示为位?

例如

在这个 case 语句(它是 select 语句的一部分)中,ICourseBased 是 int 类型。

为了让它成为一个位类型,我必须转换两个值。

是否有一种简便的方法可以将值表示为位类型,而不必每次都进行转换?

(我使用的是 MS SQL Server 2005)

0 投票
5 回答
275 浏览

arrays - 高效的位容器

我有一个位数组,在某些部分可能非常密集,而在其他部分非常稀疏。该数组可以达到 2**32 位。我将它变成一堆包含偏移量和长度的元组,以使其在内存中处理更有效。但是,有时这对于 10101010100011 之类的东西效率较低。关于将其存储在内存中的好方法有什么想法吗?

0 投票
3 回答
2229 浏览

c# - 如何读取字节数组中的单个 BIT?

问题是我有一个包含 200 个索引的字节数组,只是想检查 MyArray[75] 的第四位是零(0)还是一(1)。

0 投票
2 回答
2270 浏览

sql-server - 不能按位列分组

在 sql server 2005 中,我在查询生成器中,选择“添加分组依据”以自动将分组依据子句添加到我选择的所有字段。如果这些字段中的一个或多个是位类型,我会收到错误消息。为什么是这样?将列转换为 TINYINT 是一个很好的解决方法吗?

0 投票
2 回答
5417 浏览

c++ - 如何读取和写入位到字节数组

我有一个无符号字符缓冲区,我想知道如何将有符号和无符号位写入和读取到这个字节缓冲区。

Source Engine中有一个名为bf_write的类,其中两个主要方法(由 WriteString、WriteChar、WriteLong 等使用)使用两个名为WriteUBitLongWriteSBitLong的函数。

提前致谢

0 投票
7 回答
8770 浏览

c - C - 需要比较 int 的“n”最低位是否相等

C - 需要比较nint 的最低位是否相等。

即 n = 4;

xxxx1001 == xxxx1001(x 不在乎)

即 n = 2; xxxxxx01 == xxxxxx01

想不出不使用面具的好方法,=)。

0 投票
2 回答
1621 浏览

ruby - 在 ruby​​ 中通过 ioctl 获取 essid

为了避免依赖无线工具,我想使用 ioctl 直接从设备获取 essid,在 C 中这不是问题,但在 Ruby 中则完全不同。

问题是来自wireless.h的结构,它被用作ioctl的输入/回复:

指针部分必须是内存区域的有效地址,后跟以字节为单位的长度,然后是标志字段。我尝试使用 Array#pack 和 bit-struct gem,但还没有找到解决方案。

有没有办法绕过这个内存指针问题?