将 ArrayBuffer 的一部分转换为字符串
Convert part of an ArrayBuffer to a string
我有一个 C# 应用程序,它使用 WebSockets 向我的 Javascript 客户端发送一个 ArrayBuffer。
第一个 2 字节是 int 值(8 位)。
接下来的 17 个字节代表 17 个字符的字符串。
剩下的就是图片数组了。
现在,我可以读取第一个 2 个字节来获取我的整数。
我也可以阅读图像。
如何读取从 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
view on the interesting part of the buffer, and then uses it as arguments to String.fromCharCode
。
我有一个 C# 应用程序,它使用 WebSockets 向我的 Javascript 客户端发送一个 ArrayBuffer。 第一个 2 字节是 int 值(8 位)。
接下来的 17 个字节代表 17 个字符的字符串。
剩下的就是图片数组了。
现在,我可以读取第一个 2 个字节来获取我的整数。 我也可以阅读图像。 如何读取从 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
view on the interesting part of the buffer, and then uses it as arguments to String.fromCharCode
。