JSFiddle - React, Tailwind, and code Playground
HTML
<pre id='results'></pre>
<hr/>
<pre id='details'></pre>
JavaScript
// Generate some random data ...
var data = new Array();
for (var i = 0; i < 100000; i ++) {
data[i] = Math.floor(Math.random()*65536); // 16 bits
data[i] *= Math.floor(Math.random()*65536); // 32 bits
data[i] *= Math.floor(Math.random()*65536*16); // 52 bits
//$('#results').append(data[i].toString(16)+"\n");
}
function test(data, testFn) {
var newData = new Array();
var start = new Date();
for (i = 0; i < data.length; i ++) {
newData[i] = testFn(data[i]);
/* test output
$('#details').append(testFn.name + " : "+data[i].toString(16)+
" -> "+newData[i].hi.toString(16)+" , "+
newData[i].lo.toString(16)+" \n");
end test output */
}
var end = new Date();
$('#results').append("Function: "+testFn.name+" completed in "+(end-start)+" ms\n");
}
function numeric(n) {
return {
hi: Math.floor(n / 4294967296),
lo: (n & 0xFFFFFFFF) >>> 0
}
}
function strings(n) {
s = n.toString(16);
if (s.length > 8) {
return {
hi: parseInt( s.toString(16).slice(0, s.length - 8), 16),
lo: parseInt( s.toString(16).slice(s.length - 8), 16)
}
} else {
return { hi: 0, lo: n }
}
}
function stringPadNoParse(n) {
s = "00000000000"+n.toString(16);
return {
hi: s.toString(16).slice(0, s.length - 8),
lo: s.toString(16).slice(s.length - 8)
}
}
function stringPad(n) {
s = "00000000000"+n.toString(16);
return {
hi: parseInt( s.toString(16).slice(0, s.length - 8), 16),
lo: parseInt( s.toString(16).slice(s.length - 8), 16)
}
}
n = strings(4294967296);
$('#results').append(n);
//test(data, numeric);
//test(data, strings);
//test(data, stringPad);
//test(data, stringPadNoParse);
//$('#results').append("DONE!\n");