2014-05-09 81 views
0

讀書真的成了我的一個痛。ArrayBuffer不能從一個<a href="https://developer.chrome.com/apps/socket#method-recvFrom" rel="nofollow">chrome socket</a>解析

由於很多我之前,我使用下面的代碼來回的ArrayBuffer和字符串之間進行轉換:

function ab2str(buf) { 
    return String.fromCharCode.apply(null, new Uint16Array(buf)); 
} 

function str2ab(str) { 
    var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char 
    var bufView = new Uint16Array(buf); 
    for (var i=0, strLen=str.length; i<strLen; i++) { 
    bufView[i] = str.charCodeAt(i); 
    } 
    return buf; 
} 

不幸的是,我從套接字接收似乎是不可分析。

假設數據報:

01,33,2.58,1.00 

下面的代碼很差失敗:

function message(msg, rinfo) { 

    var string = ab2str(msg); 
    console.log(string); 
    var data = string.split(","); 
    for (i = 0; i < data.length; i++) { 
     data[i] = parseFloat(data[i]); 
     console.log(data[i]); 
    } 
} 

控制檯輸出:

01,33,2.58,1.00 
0 
NaN 
NaN 
NaN 
+0

連接的另一端是什麼? – Xan

+0

以'的SendTo()'函數發送ArrayBuffer使用'str2ab()翻新' – LePhleg

+0

str2ab(客戶端) - > SENDTO() - > recvfrom的() - > ab2str() – LePhleg

回答

1

我也已經發現,代碼不起作用,即使它已經作爲一個解決方案提供給其中的一個更多堆棧溢出「解決方案。」相反,我使用Google Chrome App tcpserver示例中的代碼:

/** 
* Converts an array buffer to a string 
* 
* @private 
* @param {ArrayBuffer} buf The buffer to convert 
* @param {Function} callback The function to call when conversion is complete 
*/ 
function _arrayBufferToString(buf, callback) { 
    var bb = new Blob([new Uint8Array(buf)]); 
    var f = new FileReader(); 
    f.onload = function(e) { 
     callback(e.target.result); 
    }; 
    f.readAsText(bb); 
} 

/** 
* Converts a string to an array buffer 
* 
* @private 
* @param {String} str The string to convert 
* @param {Function} callback The function to call when conversion is complete 
*/ 
function _stringToArrayBuffer(str, callback) { 
    var bb = new Blob([str]); 
    var f = new FileReader(); 
    f.onload = function(e) { 
     callback(e.target.result); 
    }; 
    f.readAsArrayBuffer(bb); 
} 
+1

是否有這個代碼的同步版本? – LePhleg

+0

沒有同步版本在任何谷歌官方的示例代碼,據我所知,我會感到非常驚訝,如果有,爲異步是遊戲,當你正在編寫Chrome應用的名稱。 –

相關問題