Dhiraj
Dhiraj

Reputation: 2767

Javascript - parsing a hex value

I am trying to parse a hex value to decode a card

The hex data I receive from the card is f8b2d501f8ff12e0056281ed55

First I am converting this to an integer with parseInt()

    var parseData = parseInt('f8b2d501f8ff12e0056281ed55', 16);

The value recieved is 1.9703930145800871e+31

When I try to decode this using the bitwise operator in Javascript

    var cardNumber = ((parseData & 0xFFFFF) >> 1).toString();

I received a 0 value.

What am I doing wrong here, how can I parse the value of such large integer number?

Upvotes: 1

Views: 273

Answers (2)

Dawid Loranc
Dawid Loranc

Reputation: 892

There are two ways to do it:

First, notice that & 0xFFFFF operation in your code is just equivalent to getting a substring of a string (the last 5 characters).

So, you can just do a substring from the end of your number, and then do the rest:

var data = 'b543e1987aac6762f22ccaadd';
var substring = data.substr(-5);

var parseData = parseInt(substring, 16);
var cardNumber = ((parseData & 0xFFFFF) >> 1).toString();

document.write(cardNumber);

The second way is to use any big integer library, which I recommend to you if you do any operations on the large integers.

Upvotes: 2

Moyom
Moyom

Reputation: 516

Since the number integer is so big you should use any bigNum library for js.

I recommend BigInteger, since you are working only with integers and it supports bitwise operations, however you can also check this answer for more options.

Upvotes: 0

Related Questions