Last active
August 29, 2015 14:17
-
-
Save exebetche/167d4bf403a8a68cf589 to your computer and use it in GitHub Desktop.
This file contains 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
/**** 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