Skip to content

Instantly share code, notes, and snippets.

@exebetche
Last active August 29, 2015 14:17
Show Gist options
  • Save exebetche/167d4bf403a8a68cf589 to your computer and use it in GitHub Desktop.
Save exebetche/167d4bf403a8a68cf589 to your computer and use it in GitHub Desktop.
/**** save an array of integer to an hexa string and back ***///
function num2b(num, len){
var arr = [],
top = 32-len,
mask=(2<<(len-1))-1,//len:1 is binary
v = num>>>top,
lead=false;
if(v!==0){
arr.push(v.toString(16));
lead=true;
}
while(top){
top-=len;
v=num>>top&mask;
if(lead||v!==0){
arr.push(v.toString(16));
lead=true;
}
}
return arr;
}
function arr2str(arr){
var arr_str = "",
num_str,
num_arr,
num,
num_len,
j;
for(var i=0, l=arr.length; i<l; i++){
num_l = arr[i];
num_str = "";
num_arr = num2b(num_l, 4);
num_len=num_arr.length;
arr_str+=num_len.toString(16)+num_arr.join("");
}
return arr_str;
}
function str2arr(str){
var arr = [],
n_l, n;
for(var i=0, l=str.length; i<l; i++){
n_l = parseInt(str.substr(i, 1), 16);
n=parseInt(str.substr(i+1, n_l), 16);
arr.push(n);
i+=n_l;
}
return arr;
}
var arr_to_save = [ 4, 8, 15, 16, 23, 42, 4294967295],
saved_str = arr2str(arr_to_save);
console.log(saved_str);
var arr_restored = str2arr(saved_str);
console.log(arr_restored);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment