000
16.08.2006, 12:51 Uhr
FunnyDingo
|
Hallo zusammen,
ich hoffe ich nerve nicht mit meinen dutzenden Fragen *g*. Irgendwie verstehe ich das mit den Bitoperatoren noch nicht so ganz.
Da ich eine Netzwerk-Applikation schreibe, nutze ich Poll um die Sockets zu pürfen. Nun bin ich an einem Punkt angelangt, an dem mir Poll als revents die 25 (Dez) ausgibt. Hex ist dies die 19, aber ich verstehe nicht wie ich auf die 19 komme. Die in der bits/poll.h definierten Konstanten sind:
C++: |
#define POLLIN 0x001 /* There is data to read. */ #define POLLPRI 0x002 /* There is urgent data to read. */ #define POLLOUT 0x004 /* Writing now will not block. */ # define POLLRDNORM 0x040 /* Normal data may be read. */ # define POLLRDBAND 0x080 /* Priority data may be read. */ # define POLLWRNORM 0x100 /* Writing now will not block. */ # define POLLWRBAND 0x200 /* Priority data may be written. */ # define POLLMSG 0x400 # define POLLREMOVE 0x1000 # define POLLRDHUP 0x2000 #define POLLERR 0x008 /* Error condition. */ #define POLLHUP 0x010 /* Hung up. */ #define POLLNVAL 0x020 /* Invalid polling request. */
|
Wenn ich nun verschiede dieser Werte mit OR verknüpfe, werden sie immer größer (Beispiel POLLIN | POLLNVAL = 33 (Dez)).
Ich könnte natürlich in meinem Code direkt prüfen ob revents == 25 ist, aber protabel ist das ja nicht wirklich. Wo habe ich da den Denkfehler?
lg, Funny -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
Meine Website: http://www.funnydingo.de |