WebSocket 消息中的 JavaScript 双反斜杠

标签 javascript python struct byte

我正在通过 WebSocket 将二进制数据发送到 Python 应用程序。该二进制数据通过调用 struct.unpack("BH", data") 进行解码,需要一个 4 长字节的对象。
我当前面临的问题是,所有数据都包含重复的反斜杠,即使在 arraybuffer 模式下也是如此,因此长度为 16 个字节。我无法检测到不同的大小,因为它后面附加了数据(与这个问题无关),即使我可以,我也找不到在 Python 中去掉反斜杠的方法。

数据如何发送:

// 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 端,因为我无法在不破坏基于 Python 的客户端的情况下真正更改 Python 应用程序的实现。

最佳答案

您应该将消息定义为字节而不是字符串:

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

关于WebSocket 消息中的 JavaScript 双反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141181/

相关文章:

python - 类型错误:从字典中提取值时字符串索引必须是整数

arrays - 将值附加到 struct coldfusion 中的现有键

javascript - Express JS 和 Mongoose Schema 嵌入 DBRef 示例

python - 无法同步数据库 “DatabaseError: no such table: django_site”

javascript - 删除 <td> 中的第一个单词

python - 特征提取自然语言处理

c# - 如何将 C# 结构体转换为 C 结构体?

c - 为结构体赋值

javascript - 如何在 Vuex 存储状态更改时更新 Vue 组件属性?

javascript - 强制 JQuery 对话框标题为多行