Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,31 @@
|
|||
const RADIX = 7;
|
||||
const MASK = 2**RADIX - 1;
|
||||
|
||||
const octetify = (n)=> {
|
||||
if (n >= 2147483648) {
|
||||
throw new RangeError("Variable Length Quantity not supported for numbers >= 2147483648");
|
||||
}
|
||||
const octets = [];
|
||||
for (let i = n; i != 0; i >>>= RADIX) {
|
||||
octets.push((((i & MASK) + (octets.empty ? 0 : (MASK + 1)))));
|
||||
}
|
||||
octets.reverse();
|
||||
return octets;
|
||||
};
|
||||
|
||||
const deoctetify = (octets)=>
|
||||
octets.reduce((n, octet)=>
|
||||
(n << RADIX) + (octet & MASK)
|
||||
, 0);
|
||||
|
||||
// Test (assuming Node.js)
|
||||
|
||||
const assert = require("assert");
|
||||
const testNumbers = [ 0x200000, 0x1fffff, 1, 127, 128, 2147483647 /*, 589723405834*/ ]
|
||||
|
||||
testNumbers.forEach((number)=> {
|
||||
const octets = octetify(number)
|
||||
console.log(octets);
|
||||
const got_back_number = deoctetify(octets)
|
||||
assert.strictEqual(got_back_number, number);
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue