Go Down

Topic: RFID Wiegand Interface Bit Manipulation and Masks (Read 616 times) previous topic - next topic


Hi Gang

I am trying to extract serial number from a RFID bracelet using a Wiegand Interface. I have read that I need to use a combination of bit manipulation and masks. I have been able to get my head around bit manipulation but I'm having trouble with masks.

If for example I have the following raw code;

1 0110 1101 0101 1000 0011 1111 0

And I want to remove the right most bit, I simply use bit manipulation;

rawCode >> 1

This moves all bits one step to the right leaving me with;

1 0110 1101 0101 1000 0011 1111

If however I'm only interested in the remaining last 24 bits then I believe I need to use a mask;


Specifically I need to combine bit manipulation and mask to extract the serial number;

serialNumber = (rawCode >> 1) & 0xFFFFFF

I don't understand the syntax for the mask;


The 'F' I assume is a hexadecimal, therefore FFFFFF represents 24 bits. I don't get the 0x???

Can someone possibly explain?


Jase  :)


Jan 22, 2013, 01:23 pm Last Edit: Jan 22, 2013, 01:25 pm by pYro_65 Reason: 1
literals in c/c++ use a prefix to distinguish between decimal, binary, and hexidecimal numbers.

0x is for hex

0b is for binary

decimal has no prefix.

numbers can have suffix's too denoting type,

float: 1.23f
long: 123456L
unsigned long: 123456UL

as for masks and bit manipulation, there are many articles on this exact issure here on the forums and web-wide

https://forum.arduino.cc/index.php?action=dlattach;topic=327736.0;attach=128670 New EEPROM library released


Hi pYro_65

Thanks for the reply. I think I understand so 0x is a prefix to the literal FFFFFF. So it's basically saying what to expect the mask to be, in this case a hexadecimal. I could alternatively write this as 0b1111 1111 1111 1111 1111 1111?



Nick Gammon

Please post technical questions on the forum, not by personal message. Thanks!

More info:


Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131