【问题标题】:How I can convert any JavaScript variable to Uint8Array?我如何将任何 JavaScript 变量转换为 Uint8Array?
【发布时间】:2022-11-22 01:51:42
【问题描述】:

我需要通过 websocket 发送变量的二进制表示,问题是变量可以是字符串,可以是整数,可以是任何东西。

function send(bar) {
    var foo = new TextEncoder('utf-8').encode(bar); // Works if 'bar' is string
    var foo = new Int32Array([bar]).buffer; // Works if 'bar' is integer
}

我如何将任何 JavaScript 变量转换为Uint8数组

客观的:

send('Hello')->0x48 0x65 0x6C 0x6C 0x6F

send(123)->0x7B

注意:我无法控制服务器端

【问题讨论】:

  • 使用JSON.stringify将其转换为字符串
  • 不!,JSON.stringify 用于 JSON...我正在寻找 Uint8Array。
  • 我的意思是,将其放入字符串中,您已经知道如何对字符串进行编码,对吗?
  • @Dimava 这将不起作用,因为许多值可能会创建不正确的 UTF 值。
  • JSON.stringify 将如何解决 send(88)

标签: javascript


【解决方案1】:

由于 WebSockets 支持发送字符串数据,

let socket = new WebSocket("wss://...");

socket.send(JSON.stringify(123));
socket.send(JSON.stringify("wasd"));
socket.send(JSON.stringify([1, 2, 3]));

然后JSON.parse它在接受方

socket.onmessage = function(event) {
  const data = JSON.parse(event.data)
};

【讨论】:

  • 抱歉,我无法控制服务器端。
  • 然后你不能发送“任何东西”,因为服务器现在不知道如何读取它
  • 服务器开发人员在我的团队中,但他希望在 C# 中使用 void*。他要求我至少将stringinteger转换为Uint8Array()
猜你喜欢
  • 2021-04-15
  • 2010-12-12
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多