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アプリケーションの実装を実際に変更することはできないからです。
は ' "\\ X05"'と '5'同等ですか? – guest271314
いいえ、 "\\ x05"は4バイトですが、5はバイト\ x05と同じです。 – Daniel
どの形式が '\\ x05" 'ですか? – guest271314