标签: flags

使用二进制标志来表示状态,选项等

如果我想表示使用二进制的"标志",这样我可以通过他们,并将它们存储到像一个对象状态或期权或类似的东西OPTION1 | OPTION2在那里OPTION1是0001 OPTION2是0010,这样,所获取传递为0011,较选项的组合.

我将如何在C++中执行此操作?我在想类似的东西

enum Option {
    Option_1 = 0x01,
    Option_2 = 0x02,
    Option_3 = 0x04,
    //...
}

void doSomething(Option options) {
    //...
}

int main() {
    doSomething(Option_1|Option_2);
}
Run Code Online (Sandbox Code Playgroud)

但理想情况下,doSomething知道如何解释给定的选项.

我是在正确的轨道上吗?有没有更好的办法?

更新

我不是必须Option为每种可能的组合定义一个吗?

c++ binary flags

1
推荐指数
1
解决办法
6953
查看次数

优雅的Web许可方案

我目前正在编写一个大约6-12页的Web应用程序.在每个页面上,我希望用户能够执行以下一些(或全部)操作:查看,添加,更新和删除.

我想到的当前权限方案是在数据库中有一个整数.该整数将对应于二进制数(例如:26 - > 11010).生成的二进制数用作"切换"并确定用户具有的权限.什么位表示权限存储在另一个表中的定义.

我的问题是,如果每个页面有4个选项(查看,添加,编辑,删除),那么这种确定权限的方式可能会失控.

是否有人对于权限方案有任何其他想法,这种方案与此一样灵活(关于可配置性),但不是压倒性的(关于整数限制)?

permissions binary flags

1
推荐指数
1
解决办法
190
查看次数

使用64位有符号值在SQL和C#中模拟128位无符号整数?

采用这种情况:您在C#中绑定了一些标记枚举(并且实际上是从SQL Server中的Enum-ish表生成).假设您是经销商,并允许您的经销商指定他们发货的美国州.作为一名出色而优雅的软件工程师,您将这些作为可按位组合的标志值实现以节省存储:

create table USState (
    StateID bigint, StateAbbr char(2), StateName varchar(50))
/* insert all US States + DC into USState, StateIDs must be in powers of two */ 
/* StateID 0 reserved for 'None': */
create procedure GetStatesByFlag (@StateFlags bigint) as
declare @StateIDs table
(
StateID bigint,
primary key (StateID)
)
insert into @StateIDs 
    select StateID 
    from USState
    where @StateFlags & StateID != 0
        or (@StateFlags = 0 and StateID = 0)

select s.StateID, s.StateAbbr, s.StateName 
from 
    USState s …
Run Code Online (Sandbox Code Playgroud)

c# sql flags bit-manipulation

1
推荐指数
1
解决办法
3639
查看次数

检查是否未设置所有枚举值

是否有可能使用ONE-Liner(正常方式......)来检查是否设置了所有可能的枚举状态?

从enum水果我想知道它没有设置意味着没有香蕉,没有苹果,没有甜瓜.

我怎样才能做到这一点?

c# enums flags

1
推荐指数
1
解决办法
1289
查看次数

Android窗口标志:在整个应用程序本身中,标志是否在激活中设置?

这是我的一项活动中的一个小代码.

Window window = this.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

我已经设置了清单以允许使用WAKE_LOCK.现在,我不确定的是在一个活动中设置的标志.

如果许多活动中的一个向窗口"添加"一个标志,如屏幕保护标志,它们是否在整个应用程序中持久存在?

我的预感是,如果活动要设置或添加标志,则仅当标记的活动处于活动状态时,该标志才有效.如果它调用Intent来启动另一个活动(没有指定标志),则set标志将被取消,直到有意的,未标记的活动结束,然后它可以恢复到标记活动中的原始设置状态.

我错了吗?提前致谢.

flags android android-activity

1
推荐指数
2
解决办法
4755
查看次数

C++/WinAPI - 从DWORD中删除标志(按位运算符?)

我现在知道如何使用按位&AND运算符检查DWORD(特别是Windows样式)中是否存在某个标志.我该怎么做:

if (dwMyFlags & dwSomeFlag) {
    // dwMyFlags contains dwSomeFlag
    // ->> How do I remove dwSomeFlag from dwMyFlags?
}
Run Code Online (Sandbox Code Playgroud)

我知道减去它是行不通的,是否有一些运算符可以从DWORD中删除标志?

c++ winapi flags dword bit-manipulation

1
推荐指数
3
解决办法
1939
查看次数

SDL在HW_SURFACE上进行双缓冲

我不明白为什么我的SDL应用程序不会像我要的那样设置DOUBLE_BUF;

这是一个简短的代码,这个,没有参数执行打开全屏窗口,1024*768,在32 BPP模式.

#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>

#include "main.h"

SDL_Surface *screen;
Main mainstruct;

void testModesInFormat(SDL_PixelFormat * format)
{

    SDL_Rect **modes;
    int i;

    printf("Available hardware accelerated, fullscreen modes in %d bpp:\n",
           format->BitsPerPixel);

    modes = SDL_ListModes(format, SDL_FULLSCREEN | SDL_HWSURFACE | SDL_DOUBLEBUF);

    // Check is there are any modes available
    if(modes == (SDL_Rect **) 0)
    {
        printf("\tNo modes available!\n");
        return;
    }

    // Check if our resolution is restricted
    if(modes == (SDL_Rect **) - 1)
    {
        printf("\tAll resolutions available.\n");
    }
    else
    { …
Run Code Online (Sandbox Code Playgroud)

flags sdl doublebuffered

1
推荐指数
1
解决办法
1477
查看次数

如何处理名称为flags的文件

我想知道如何处理名称为标志的文件,如'-a',' - f'等.我不能将它们作为参数传递给像rm或者这样的程序ls,因为它们被解释为标志,并且正在执行rm *ls *只是运行那些带有文件名标志的程序(原因很明显).如何在程序参数中将标志作为普通文件名传递?

unix linux flags

1
推荐指数
1
解决办法
51
查看次数

Golang指针字符串值

一些代码我使用标志来管理程序或服务.今天我遇到了问题,我想使用这种声明:

var port = flag.String("port", "", "port")
Run Code Online (Sandbox Code Playgroud)

它返回一个*string我无法转换为的类型变量string.我是如何解决问题的:

r.Run(":" + *port)
Run Code Online (Sandbox Code Playgroud)

这是有效的,但最佳做法是什么?我的意思是有一些函数正在等待字符串作为参数,在这种情况下我无法处理.

flags pointers go

1
推荐指数
1
解决办法
8750
查看次数

Powershell:基于局部变量的条件标志

有一个叫我PowerShell脚本变量$IncludeSubfolders(或01)

根据它的值,我想Get-ChildItem在有或没有-Recurse选项的情况下调用方法.

目前,我的代码如下所示:

if($IncludeSubfolders) {
    $Files = Get-ChildItem $RootPath -Name $FileMask -Recurse
} else {
    $Files = Get-ChildItem $RootPath -Name $FileMask
}
Run Code Online (Sandbox Code Playgroud)

我想避免这种分支,如果有或没有它,只需Get-ChildItem要用一行代码调用.-Recurse$IncludeSubfolders10

这可以实现吗?怎么样?

Powershell版本5.0.10586.117

powershell flags conditional powershell-5.0

1
推荐指数
1
解决办法
676
查看次数