473,386 Members | 2,114 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

BIT banging help

I want to store the maximum amount of permissions in a bit mask.

From what I know, I should use the C# long data type and use the
bigint in sqlserver.

How would I initialize a variable of type long to represent a 64bit
mask?

I think it is something like:

0x0..............0

But I am unsure as to the exact number of 0's, can someone clear this
up for me (with as much detail as possible).
Jan 17 '08 #1
9 2349
On Thu, 17 Jan 2008 11:59:58 -0800, DotNetNewbie <sn***********@yahoo.com
wrote:
[...]
How would I initialize a variable of type long to represent a 64bit
mask?

I think it is something like:

0x0..............0

But I am unsure as to the exact number of 0's, can someone clear this
up for me (with as much detail as possible).
long grbitMask = 0;

You can write as many zeros in your literal as you like. The number is
still zero.

Jan 17 '08 #2

"DotNetNewbie" <sn***********@yahoo.comwrote in message
news:fb**********************************@q77g2000 hsh.googlegroups.com...
>I want to store the maximum amount of permissions in a bit mask.

From what I know, I should use the C# long data type and use the
bigint in sqlserver.

How would I initialize a variable of type long to represent a 64bit
mask?

I think it is something like:

0x0..............0

When entering the digits in hexadecimal (prefix 0x), every digit
represents four bits. Therefore, you would need 16 hex digits to represent a
64-bit value. However, if it is all zeroes that you want, you don't have to
write all of them. Just writing value=0 will set to zero all the bits in
value.
Jan 17 '08 #3
On Jan 17, 3:17*pm, "Alberto Poblacion" <earthling-
quitaestoparacontes...@poblacion.orgwrote:
"DotNetNewbie" <snowman908...@yahoo.comwrote in message

news:fb**********************************@q77g2000 hsh.googlegroups.com...
I want to store the maximum amount of permissions in a bit mask.
From what I know, I should use the C# long data type and use the
bigint in sqlserver.
How would I initialize a variable of type long to represent a 64bit
mask?
I think it is something like:
0x0..............0

* * When entering the digits in hexadecimal (prefix 0x), every digit
represents four bits. Therefore, you would need 16 hex digits to representa
64-bit value. However, if it is all zeroes that you want, you don't have to
write all of them. Just writing value=0 will set to zero all the bits in
value.
I want to make an enumeration that will represent all my permission
values for each role, then I will get all the users roles and then OR
them together to get the users final permission value.

So something like:

enum Permisions : long
{
CanLogIn = 0,
CanXXXX = 0x0000000000000001,
CanAAA = 0x0000000000000002,
CanBBB = 0x0000000000000004,
etc.

}

1. how many enum values can I store with a long? (which I will then
store as a bigint in sqlserver).
Jan 17 '08 #4
On Thu, 17 Jan 2008 13:23:21 -0800, DotNetNewbie <sn***********@yahoo.com>
wrote:
[...]
1. how many enum values can I store with a long? (which I will then
store as a bigint in sqlserver).
Do you know how many bits are in a long?

Do you know how many bits it takes to store one permission flag?

You _should_ already have the answers to both of those questions. And
from those answers, the answer to "how many enum values can I store with a
long" is trivial to answer.

Pete

Jan 17 '08 #5
On Jan 17, 4:44*pm, "Peter Duniho" <NpOeStPe...@nnowslpianmk.com>
wrote:
On Thu, 17 Jan 2008 13:23:21 -0800, DotNetNewbie <snowman908...@yahoo.com>*
wrote:
[...]
1. *how many enum values can I store with a long? (which I will then
store as a bigint in sqlserver).

Do you know how many bits are in a long?

Do you know how many bits it takes to store one permission flag?

You _should_ already have the answers to both of those questions. *And *
*from those answers, the answer to "how many enum values can I store with a *
long" is trivial to answer.

Pete
long is 64 bits, or 8 bytes.

I want to be able to AND and OR each permission enum value, so there
can't be any overlap.
From what I understand that I will use 1 bit per permission right?

Jan 17 '08 #6
DotNetNewbie wrote:
On Jan 17, 3:17 pm, "Alberto Poblacion" <earthling-
quitaestoparacontes...@poblacion.orgwrote:
>"DotNetNewbie" <snowman908...@yahoo.comwrote in message

news:fb**********************************@q77g200 0hsh.googlegroups.com...
>>I want to store the maximum amount of permissions in a bit mask.
From what I know, I should use the C# long data type and use the
bigint in sqlserver.
How would I initialize a variable of type long to represent a 64bit
mask?
I think it is something like:
0x0..............0
When entering the digits in hexadecimal (prefix 0x), every digit
represents four bits. Therefore, you would need 16 hex digits to represent a
64-bit value. However, if it is all zeroes that you want, you don't have to
write all of them. Just writing value=0 will set to zero all the bits in
value.

I want to make an enumeration that will represent all my permission
values for each role, then I will get all the users roles and then OR
them together to get the users final permission value.

So something like:

enum Permisions : long
{
CanLogIn = 0,
CanXXXX = 0x0000000000000001,
CanAAA = 0x0000000000000002,
CanBBB = 0x0000000000000004,
etc.

}

1. how many enum values can I store with a long? (which I will then
store as a bigint in sqlserver).
You can store 64 bits if you use a ulong and bigint unsigned.
You can store 63 bits if you use a long and bigint.

You don't need to worry about setting the values - just use:

[Flags]
enum Permissions : ulong
{
CanLogIn,
CanXXXX,
CanAAA,
CanBBB
}

Alun Harford
Jan 17 '08 #7
On Thu, 17 Jan 2008 13:53:20 -0800, DotNetNewbie <sn***********@yahoo.com>
wrote:
long is 64 bits, or 8 bytes.
Yes.
I want to be able to AND and OR each permission enum value, so there
can't be any overlap.
Yes. Obviously you cannot use the same bit for two different values.
From what I understand that I will use 1 bit per permission right?
Assuming each permission is "on" or "off", yes.
Jan 17 '08 #8
Alun Harford formulated the question :
You don't need to worry about setting the values - just use:

[Flags]
enum Permissions : ulong
{
CanLogIn,
CanXXXX,
CanAAA,
CanBBB
}

Alun Harford
No, that would still use underlying values of 0, 1, 2, 3 instead of 1,
2, 4, 8

Hans Kesting
Jan 18 '08 #9
You can do something like this

public class Permissions
{
ulong val = 0;

public enum Attr
{
CanLogIn,
CanXXXX,
CanAAA,
CanBBB
}

public Permissions (params Attr[] attr)
{
val = 0;
foreach (Attr a in attr)
val |= ( 1U << (int) a );
}

public bool IsSet(Attr a)
{
return ((val & ( 1U << (int) a )) != 0);
}

// etc
}
and then

Permissions p = new Permissions(Permissions.Attr.CanAAA,
Permissions.Attr.CanBBB);

bool b = p.IsSet(Permissions.Attr.CanBBB);
b = p.IsSet(Permissions.Attr.CanLogIn);

Could be done better but I know C++ better than C#. Checkout [Flags] for
Attr.
"Hans Kesting" <in************@spamgourmet.comwrote in message
news:mn***********************@spamgourmet.com:
Alun Harford formulated the question :

You don't need to worry about setting the values - just use:

[Flags]
enum Permissions : ulong
{
CanLogIn,
CanXXXX,
CanAAA,
CanBBB
}

Alun Harford


No, that would still use underlying values of 0, 1, 2, 3 instead of 1,
2, 4, 8

Hans Kesting
Jan 18 '08 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

21
by: Dave | last post by:
After following Microsofts admonition to reformat my system before doing a final compilation of my app I got many warnings/errors upon compiling an rtf file created in word. I used the Help...
6
by: wukexin | last post by:
Help me, good men. I find mang books that introduce bit "mang header files",they talk too bit,in fact it is my too fool, I don't learn it, I have do a test program, but I have no correct doing...
4
by: SteveKlett | last post by:
I took over some code for someone here and I have a real irritating situation. There are 20 or so structs that are initialized ad I need to change some of the values of these structs based on a...
3
by: Colin J. Williams | last post by:
Python advertises some basic service: C:\Python24>python Python 2.4.1 (#65, Mar 30 2005, 09:13:57) on win32 Type "help", "copyright", "credits" or "license" for more information. >>> With...
7
by: Corepaul | last post by:
Missing Help Files When I enter "recordset" as the keyword and search the Visual Basic Help index, I get many topics of interest in the resulting list. But there isn't any information available...
5
by: Steve | last post by:
I have written a help file (chm) for a DLL and referenced it using Help.ShowHelp My expectation is that a developer using my DLL would be able to access this help file during his development time...
8
by: Mark | last post by:
I have loaded Visual Studio .net on my home computer and my laptop, but my home computer has an abbreviated help screen not 2% of the help on my laptop. All the settings look the same on both...
10
by: JonathanOrlev | last post by:
Hello everybody, I wrote this comment in another message of mine, but decided to post it again as a standalone message. I think that Microsoft's Office 2003 help system is horrible, probably...
1
by: trunxnirvana007 | last post by:
'UPGRADE_WARNING: Array has a new behavior. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"' 'UPGRADE_WARNING: Couldn't resolve...
4
by: TheNational22 | last post by:
I have set up PHP 5, Apache 2, and MySQL on a vista pro 64bit machine. I am using the Sams teach yourself text to set up and learn from. When i navigate to localhost and look at a html file, i see a...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.