![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 3 Dołączył: 9.12.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Ostatnio zacząłem się dokształcać w zakresie operacji na bitach i chciałem w ramach treningu napisać prosty system uprawnień użytkowników oparty na flagach bitowych. Posiadam 2 tabele w bazie danych, w skrócie: Users: id int UNSIGNED NOT NULL auto_increment, group_id int UNSIGNED NOT NULL, username varchar(32) NOT NULL Groups: id int UNSIGNED NOT NULL auto_increment name varchar(32) NOT NULL, permissions tinyint(8) NOT NULL Do tabeli groups wprowadziłem dane: // Unactivated - 00000000 // User - 01000111 // VIP - 11111001 1 - Opcja 1 2 - Opcja 2 4 - Opcja 3 8 - Opcja 4 16 - Opcja 5 32 - Opcja 6 64 - Opcja 7 128 - Opcja 8 Jak sprawdzić, czy user z grupą "VIP" ma włączoną opcję 4, a user z opcją User ma opcję 7? Dla różnych grup będzie inna suma bitów w systemie dziesiętnym reprezentująca daną opcję, od jakiej strony do tego podejść? Z góry dziękuje za pomoc @EDIT Wynalazłem sposób poprzez shiftowanie bitów tzn:
Tylko, czy jest to najlepsze wyjsce? Ten post edytował Ultear 2.03.2015, 00:08:43 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 20:26 |