Go Down

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

ilovetoflyfpv

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;

0xFFFFFF

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;

0xFFFFFF

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

Can someone possibly explain?

Cheers

Jase  :)






pYro_65

#1
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
etc...

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


ilovetoflyfpv

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?

Cheers

Jase

Nick Gammon

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

More info:
http://www.gammon.com.au/electronics

ilovetoflyfpv


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!

Arduino
via Egeo 16
Torino, 10131
Italy