Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. //----------- serializing/deserializing procedures
  2.  
  3. //encoding int contours array to be sent as base64 string
  4. function getBase64IntArray(arr) {
  5.  
  6. var width = arr.length;
  7. //This works given the inner arrays length never changes.
  8. var height = arr[0].length;
  9. //string that would contain data
  10. var str = width.toString()+","+height.toString()+",";
  11.  
  12. for(var x = 0; x < height; x++) {
  13. for(var y = 0; y < width; y++) {
  14. str = str + arr[x][y].toString() + ",";
  15. }
  16. }
  17.  
  18. var str64 = btoa(str);
  19. return str64;
  20. }//getBase64IntArray
  21.  
  22. //deconding this string back to array
  23. function getIntArrayfromBase64(str64) {
  24.  
  25. var str = atob(str64);
  26. //first occurence of ","
  27. var width_str = str.substr(0,str.indexOf(','));
  28. str = str.substr(str.indexOf(',')+1); // cut the beginning
  29. //again first occurence of ","
  30. var height_str = str.substr(0,str.indexOf(','));
  31. str = str.substr(str.indexOf(',')+1); // cut the beginning
  32.  
  33. var width = parseInt(width_str);
  34. var height = parseInt(height_str);
  35.  
  36. //declare new array and fill it
  37. var arr = new Array(height);
  38. var curr_str = "";
  39.  
  40. for(var x = 0; x < height; x++) {
  41.  
  42. arr[x] = new Array(width);
  43.  
  44. for(var y = 0; y < width; y++) {
  45. //first occurence of ","
  46. curr_str = str.substr(0,str.indexOf(','));
  47. // cut the beginning
  48. str = str.substr(str.indexOf(',')+1);
  49. arr[x][y]=parseInt(curr_str);
  50. }
  51. }
  52.  
  53. return arr;
  54.  
  55. }// getIntArrayfromBase64
  56.  
  57. //----------- example usage
  58. function send(){
  59. //encoding to base64
  60. var arr = [
  61. [1, 2],
  62. [3, 4]
  63. ];
  64.  
  65. var base64 = getBase64IntArray(arr);
  66. webSocket.send(base64);
  67. }
  68.  
  69. webSocket.onmessage = function(event){
  70.  
  71. //reading array as base64 string
  72. var arr = getIntArrayfromBase64(event.data);
  73. var width = arr.length;
  74. var height = arr[0].length;
  75.  
  76. writeResponse("Received "+width+" "+height+" "+arr[0][0]+arr[1][1]);
  77. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement