标签: arraybuffer

奇怪的ArrayBuffer行为

有人可以向我解释为什么ArrayBuffer的padTo方法不能像我期望的那样工作吗?在这个例子中,我希望toArray创建的数组的长度为10.

scala> val b = new scala.collection.mutable.ArrayBuffer[Byte]
b: scala.collection.mutable.ArrayBuffer[Byte] = ArrayBuffer()

scala> b.append(2)

scala> b
res1: scala.collection.mutable.ArrayBuffer[Byte] = ArrayBuffer(2)

scala> b.append(2)

scala> b
res3: scala.collection.mutable.ArrayBuffer[Byte] = ArrayBuffer(2, 2)

scala> b.padTo(10,0)
res4: scala.collection.mutable.ArrayBuffer[AnyVal] = ArrayBuffer(2, 2, 0, 0, 0, 0, 0, 0, 0, 0)

scala> b.toArray
res5: Array[Byte] = Array(2, 2)
Run Code Online (Sandbox Code Playgroud)

arrays collections scala mutable arraybuffer

4
推荐指数
1
解决办法
877
查看次数

Javascript - 在Unicode字符串和ArrayBuffer之间转换

有人知道一个脚本能够使用unicode编码将字符串转换为ArrayBuffer吗?

我正在创建node.js的"缓冲区"的浏览器端等效.剩下的唯一编码是unicode.所有其他人都完成了.

谢谢你的帮助!

javascript unicode encoding arraybuffer

4
推荐指数
1
解决办法
6306
查看次数

如何在javascript单元测试期间加载二进制文件?

在我的应用程序中,用户使用HTML5拖放来处理二进制文件.那部分代码运行正常.在chrome中,我拖动一个二进制文件并使用FileReader创建一个arrayBuffer.这一切似乎都很好.我正在为这个功能编写测试,但我很茫然.如何将二进制文件加载到单元测试中?对于我正在测试的一些代码,我只需要一个arrayBuffer.目前,我手动创建了arrayBuffer,但这不是一个可持续的解决方案.为了使我的测试有效,我需要能够随时抛出一个新的二进制文件并进行新的测试.我的测试环境是testacular + jasmine.

( function() {"use strict";
    function loadSimpleDataView() {
      //instead of defining ArrayBuffer, 
      //I want it to be generated based upon an external file
      var buffer = new ArrayBuffer(4), dataView = new DataView(buffer), int8View = new Int8Array(buffer);
      int8View.set([0x00,0x01,0x02,0x03]);

      return dataView;
    }

    describe('mymodule', function() {

      it('mytest', function() {
        var dataView  = loadSimpleDataView();

        expect(dataView).toBeDefined();
        //do rest of tests
      });
    });
  }());
Run Code Online (Sandbox Code Playgroud)

javascript jasmine arraybuffer karma-runner

4
推荐指数
2
解决办法
4223
查看次数

使用Web Audio API将多个ArrayBuffer合并/分层为一个AudioBuffer

我需要分层循环.wav轨道,最终我将需要能够打开和关闭并保持同步。

首先,我加载了曲目,并停止BufferLoader了将加载的内容arraybuffer变成的AudioBuffer(因此false

        function loadTracks(data) {
            for (var i = 0; i < data.length; i++) {
                trackUrls.push(data[i]['url']);
            };
            bufferLoader = new BufferLoader(context, trackUrls, finishedLoading);
            bufferLoader.load(false);
            return loaderDefered.promise;
        }
Run Code Online (Sandbox Code Playgroud)

当您单击屏幕上的按钮时,它将调用startStop()

    function startStop(index, name, isPlaying) {
        if(!activeBuffer) {
            activeBuffer = bufferList[index];
        }else{
            activeBuffer = appendBuffer(activeBuffer, bufferList[index]);
        }
        context.decodeAudioData(activeBuffer, function(buffer){
            audioBuffer = buffer;
            play();
        })


    function play() {
        var scheduledTime = 0.015;
        try {
            audioSource.stop(scheduledTime);
        } catch (e) {}

        audioSource = context.createBufferSource();
        audioSource.buffer = …
Run Code Online (Sandbox Code Playgroud)

javascript merge arraybuffer audiobuffer web-audio-api

4
推荐指数
1
解决办法
2690
查看次数

在Javascript中将ArrayBuffer转换为int

我试图使用JavaScript将ArrayBuffer转换为int.我的应用程序使用WebSocket,在Sender端我有一个0到4之间的整数.我在C#中转换这个ArraySegment.我通过Web套接字将其发送到我的JavaScript客户端,该客户端将其作为ArrayBuffer接收.

ArrayBuffer现在保持0或1或2或3的值.如何"读取"该值?

javascript arraybuffer

4
推荐指数
1
解决办法
8199
查看次数

在ArrayBuffer中存储一个json对象

想要在其中存储一个json对象 ArrayBuffer

function stringToUint(string) {
    var string = btoa(unescape(encodeURIComponent(string))),
        charList = string.split(''),
        uintArray = [];
    for (var i = 0; i < charList.length; i++) {
        uintArray.push(charList[i].charCodeAt(0));
    }
    return new Uint8Array(uintArray);
}

function uintToString(uintArray) {
    var encodedString = String.fromCharCode.apply(null, uintArray),
        decodedString = decodeURIComponent(escape(atob(encodedString)));
    return decodedString;
}
var str = {'x':'aaaa'},
    enc = stringToUint(str),
    dec = uintToString(enc);

console.log(dec.x);
Run Code Online (Sandbox Code Playgroud)

console.log(dec.x);正在打印`未定义。我做错了吗?这是jsfiddle http://jsfiddle.net/DQJyX/137/

javascript arraybuffer

4
推荐指数
1
解决办法
6122
查看次数

CryptoKey ArrayBuffer 到 base64 并返回

我想知道如何解决这个问题。我使用 WebCrypto API 生成 RSA-OAEP 密钥对,然后从导出为 ArrayBuffer 的密钥对中导出 pkcs8 中的私钥,并且我想将此 ArrayBuffer 编码为 base64,以便可以将其存储为 PEM。

\n\n

在此测试示例中,我将密钥导出为 pkcs8 并将此 pkcs8 导入回 CryptoKey。问题是有时有效有时无效。

\n\n

这些是代码的结果:\n注意:仅发生这些状态之一,而不是同时发生。\n注意2:此示例不包含 -----BEGIN PRIVATE KEY----- 前缀和后缀 我仅对钥匙。

\n\n

Case1:未捕获(在承诺中)URIError:URI格式错误(\ xe2 \ x80 \ xa6)b64DecodeUnicode @ try.php:20b64toab @ try.php:70wayBack @ try.php:66(匿名函数)@ try.php:56

\n\n

Case2:未定义:1未捕获(承诺中)DOMException

\n\n

Case3:好的 - 一直可以正常工作。

\n\n

我不知道是什么原因导致了错误,但我认为这与 base64 编码有关。正如我所说,有时私钥生成正常,有时则不行。

\n\n

非常感谢您提前提供的每一个帮助。

\n\n
function b64EncodeUnicode(str) {\n    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {\n        return String.fromCharCode(\'0x\' + p1);\n    }));\n}\n\nfunction b64DecodeUnicode(str) {\n    return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {\n        return \'%\' + (\'00\' + c.charCodeAt(0).toString(16)).slice(-2);\n …
Run Code Online (Sandbox Code Playgroud)

javascript base64 pem arraybuffer webcrypto-api

4
推荐指数
1
解决办法
8181
查看次数

将 ArrayBuffer 转换为 ImageData 以在画布上绘制:优化

我通过以原始 ImageData 格式(RGBA 顺序每像素 4 个字节)发送每一帧,通过 WebSocket 流式传输视频。当我收到客户端上的每一帧(作为ArrayBuffer)时,我想使用putImageData尽可能有效地将此图像直接绘制到画布上。

这是我目前的解决方案:

// buffer is an ArrayBuffer representing a properly-formatted image
var array = new Uint8ClampedArray(buffer);
var image = new ImageData(array, width, height);
canvas.putImageData(image, 0, 0);
Run Code Online (Sandbox Code Playgroud)

但是速度比较慢。我的理论是为什么:

  • 数组(大小约为 1MB)被复制三次,一次进入Uint8ClampedArray,一次进入ImageData,最后进入画布,每帧(每秒 30 次)。

  • new每帧使用两次,这可能是垃圾收集器的问题。

这些理论是否正确,如果正确,我可以采用什么技巧来尽快完成?我愿意接受特定于浏览器的答案。

javascript optimization canvas arraybuffer putimagedata

4
推荐指数
1
解决办法
6766
查看次数

Angular 4.3:使用新的HttpClient获取数组缓冲区

我想换成新的HttpClient.到目前为止我处理文件下载如下:

getXlsx (): Observable<any> {
    return this.http.get('api/xlsx', {
      responseType: ResponseContentType.ArrayBuffer, // set as ArrayBuffer instead of Json
    })
    .map(res => downloadFile(res, 'application/xlsx', 'export.xlsx'))
    .catch(err => handleError(err));
  }

export function downloadFile(data: any, type: string, filename: string): string {
  const blob = new Blob([data._body], { type });
  const url = window.URL.createObjectURL(blob);

  // create hidden dom element (so it works in all browsers)
  const a = document.createElement('a');
  a.setAttribute('style', 'display:none;');
  document.body.appendChild(a);

  // create file, attach to hidden element and open hidden element
  a.href = …
Run Code Online (Sandbox Code Playgroud)

blob httpclient arraybuffer angular

4
推荐指数
2
解决办法
1万
查看次数

无法在 Javascript 中获取 ArrayBuffer 对象的值

我有一个ArrayBuffer对象,我需要能够转换为StringJSON,但我不能得到的价值[Int8Array]出来的对象,即使它是明显存在的。

在此处输入图片说明

我已经尝试了所有变体,但它们都返回 undefined

console.log(result);//Returns the array buffer
//Following methods all return undefined?
console.log(result["[[Int8Array]]"]);
console.log(result[[[Int8Array]]]);
console.log(result[[["Int8Array"]]]);
console.log(result[Int8Array]);
console.log(result["Int8Array"]);
Run Code Online (Sandbox Code Playgroud)

如何获取对象中明确可用的所有 Int8Array 或 UInt8Array 值?

javascript arrays string json arraybuffer

4
推荐指数
2
解决办法
1765
查看次数