将ArrayBuffer的一部分转换为字符串

Convert part of an ArrayBuffer to a string

本文关键字:字符串 转换 一部分 ArrayBuffer      更新时间:2023-09-26

我有一个C#应用程序,它使用WebSockets向我的Javascript客户端发送一个ArrayBuffer。第一个2字节是int值(8位(。

接下来的17个字节表示一个由17个字符组成的字符串。

剩下的是一个图像阵列。

现在,我可以读取前2个字节来获得int。我还可以阅读图片。如何读取从2索引(使用1的基索引(和以下17个字节开始的字符串值?

到目前为止,我的代码是:

var len = e.data.byteLength;
var dv = new DataView(e.data);
var liveViewIndex = dv.getInt8(0);
var tripped = dv.getInt8(1);
//need to get 17 char string here!!
var frame = e.data.slice(19, len - 19);
desktopImage.src = 'data:image/jpeg;base64,' + base64ArrayBuffer(frame);

感谢

假设字符串被编码为简单的ASCII,以下内容应该有效:

var string = String.fromCharCode.apply(String, new Uint8Array(e.data, 2, 17));

它首先在缓冲区感兴趣的部分创建一个Uint8Array视图,然后将其用作String.fromCharCode的参数。