2016-10-19 65 views
0

我正在通過WebSocket發送二進制數據給Python應用程序。該二進制數據通過調用struct.unpack("BH", data")進行解碼,需要一個4字節的字節對象。
我目前面臨的問題是,即使在arraybuffer模式下,所有數據都包含重複的反斜槓,因此它的長度爲16個字節。我無法檢測到變化的大小,因爲有數據附加到它的後面(與這個問題無關),即使我可以,我也找不到在Python中去除反斜槓的方法。WebSocket消息中的JavaScript雙反斜槓

如何將數據發送:

// this.webSocket.binaryType = "arraybuffer"; 
var message = "\\x05\\x00\\x00\\x00"; // escaping required 
var buffer = new Int8Array(message.length); 
for (var i = 0; i < message.length; i++) { 
    buffer[i] = message.charCodeAt(i); 
} 
this.webSocket.send(buffer.buffer); 

相比較而言,這是怎麼說的Python中定義的數據時的樣子:

b'\x05\x00\x00\x00' 

,這是它的外觀作爲接收消息:

b'\\x05\\x00\\x00\\x00' 

這個問題的理想解決方案是JavaScript-s因爲我不能在不破壞基於Python的客戶端的情況下真正改變Python應用程序的實現。

回答

1

你應該定義該消息是字節,而不是作爲字符串:

var buffer = new Int8Array([5,0,0,0]) 
this.webSocket.send(buffer.buffer) 
+0

是'5'相當於' 「\\ X05」'? – guest271314

+0

不,「\\ x05」是4個字節,但5等於字節'\ x05'。 – Daniel

+0

'「\\ x05」'是什麼格式? – guest271314

相關問題