Created
October 15, 2012 14:20
-
-
Save joaomaia/3892692 to your computer and use it in GitHub Desktop.
Convert number to bcd and vice versa
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* bcd2number -> takes a nodejs buffer with a BCD and returns the corresponding number. | |
* input: nodejs buffer | |
* output: number | |
*/ | |
var bcd2number = function(bcd) | |
{ | |
var n = 0; | |
var m = 1; | |
for(var i = 0; i<bcd.length; i+=1) { | |
n += (bcd[bcd.length-1-i] & 0x0F) * m; | |
n += ((bcd[bcd.length-1-i]>>4) & 0x0F) * m * 10; | |
m *= 100; | |
} | |
return n; | |
} | |
/* | |
* number2bcd -> takes a number and returns the corresponding BCD in a nodejs buffer object. | |
* input: 32 bit positive number, nodejs buffer size | |
* output: nodejs buffer | |
*/ | |
var number2bcd = function(number, size) { | |
var s = size || 4; //default value: 4 | |
var bcd = new Buffer(s); | |
bcd.fill(0); | |
while(number !== 0 && s !== 0) { | |
s-=1; | |
bcd[s] = (number % 10); | |
number = (number / 10)|0; | |
bcd[s] += (number % 10) << 4; | |
number = (number / 10)|0; | |
} | |
return bcd; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment