gpt4 book ai didi

javascript - 为 Dart 二进制 websocket 从 ByteBuffer 读取/写入固定大小的 int 和字符串

转载 作者:行者123 更新时间:2023-11-30 17:35:14 32 4
gpt4 key购买 nike

我想编写一个 dart websocket 客户端(通过 dart2js 和 dart:html)来读取和写入自定义二进制消息。我想当 binaryType 设置为 'arraybuffer' 时,传入的 MessageEvent.data 是来自 typed_data dart 包的 ByteBuffer。知道传入的字节结构后,我想读出两个字节作为 uint16。相反,我需要向传出缓冲区添加一个 uint16。这种情况下的具体机制是什么?我如何在同一个输入/输出缓冲区中读取/写入字符串?

dart 二进制 websockets 最近的例子似乎不多,我想做类似 this guy 的事情。如有必要,为 javascript 和 dart 使用 DataStream。

最佳答案

您已经找到了正确的库 (typed_data)。现在只需使用它的类(尤其是 ByteData)将数据放入缓冲区或从缓冲区读取数据。

例如从接收缓冲区中读取两个 uint16:

if ((event.data as ByteBuffer).lengthInBytes < 4) { // ignore packet }
ByteData bd = ByteData.view(event.data, 0, (event.data as ByteBuffer).lengthInBytes);
int first = bd.getUint16(0);
int second = bd.getUint16(2);

并发送两个 uint16:

Uint8List newBuffer = new Uint8List(4);
ByteData newBufferView = new ByteData.view(newBuffer.buffer, 0);
newBufferView.setUint16(0, 24);
newBufferView.setUint16(0, 4321);
socket.sendTypedData(newBuffer);

要读取和写入字符串,请查看 dart:convert 的编解码器,例如 Utf8Codec,它可以从字节列表读取字符串或向字节列表写入字符串。

关于javascript - 为 Dart 二进制 websocket 从 ByteBuffer 读取/写入固定大小的 int 和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201183/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com