有人可以向我解释为什么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) 有人知道一个脚本能够使用unicode编码将字符串转换为ArrayBuffer吗?
我正在创建node.js的"缓冲区"的浏览器端等效.剩下的唯一编码是unicode.所有其他人都完成了.
谢谢你的帮助!
在我的应用程序中,用户使用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) 我需要分层循环.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将ArrayBuffer转换为int.我的应用程序使用WebSocket,在Sender端我有一个0到4之间的整数.我在C#中转换这个ArraySegment.我通过Web套接字将其发送到我的JavaScript客户端,该客户端将其作为ArrayBuffer接收.
ArrayBuffer现在保持0或1或2或3的值.如何"读取"该值?
想要在其中存储一个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/
我想知道如何解决这个问题。我使用 WebCrypto API 生成 RSA-OAEP 密钥对,然后从导出为 ArrayBuffer 的密钥对中导出 pkcs8 中的私钥,并且我想将此 ArrayBuffer 编码为 base64,以便可以将其存储为 PEM。
\n\n在此测试示例中,我将密钥导出为 pkcs8 并将此 pkcs8 导入回 CryptoKey。问题是有时有效有时无效。
\n\n这些是代码的结果:\n注意:仅发生这些状态之一,而不是同时发生。\n注意2:此示例不包含 -----BEGIN PRIVATE KEY----- 前缀和后缀 我仅对钥匙。
\n\nCase1:未捕获(在承诺中)URIError:URI格式错误(\ xe2 \ x80 \ xa6)b64DecodeUnicode @ try.php:20b64toab @ try.php:70wayBack @ try.php:66(匿名函数)@ try.php:56
\n\nCase2:未定义:1未捕获(承诺中)DOMException
\n\nCase3:好的 - 一直可以正常工作。
\n\n我不知道是什么原因导致了错误,但我认为这与 base64 编码有关。正如我所说,有时私钥生成正常,有时则不行。
\n\n非常感谢您提前提供的每一个帮助。
\n\nfunction 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) 我通过以原始 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每帧使用两次,这可能是垃圾收集器的问题。
这些理论是否正确,如果正确,我可以采用什么技巧来尽快完成?我愿意接受特定于浏览器的答案。
我想换成新的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) 我有一个ArrayBuffer对象,我需要能够转换为String对JSON,但我不能得到的价值[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 值?
arraybuffer ×10
javascript ×8
arrays ×2
angular ×1
audiobuffer ×1
base64 ×1
blob ×1
canvas ×1
collections ×1
encoding ×1
httpclient ×1
jasmine ×1
json ×1
karma-runner ×1
merge ×1
mutable ×1
optimization ×1
pem ×1
putimagedata ×1
scala ×1
string ×1
unicode ×1