问题标签 [uint8array]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2779 浏览

flutter - 将 uint8list 图像转换为支持的图像文件(jpg 等)

在 android 10 和 11(SDK 编号 29 和 30)中,音乐封面(艺术品)格式与以前的版本不同,事实上,它们不能作为支持的图像文件(如 jpg 或 png)读取,它们是 uint8lists 和只有 Image.memory 小部件接受并显示它们。

现在,我的问题是我不想将它们作为记忆图像读取,我需要 jpg 等文件。

搜了很多!阅读了很多,发现只有 1,没有工作的解决方案!那就是将unit8list作为字节写入文件中,其路径以“.jpg”结尾。正如我所说,它不起作用。

任何人都可以帮忙吗?

在此先感谢,<3。

uint8list 示例:[255, 216, 255, 224, 0, 16, 74, 70, 73, 70, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 255, 226, 2, 40、73、67、67、95、80、82……]

长度:千

0 投票
1 回答
166 浏览

javascript - 对象嵌套 Uint8Array(32) 到 String 到 btoa 到 localStorage 到 atob 到 Uint8Array(32)

我的 javascript 技能很少,我不确定在将原始 Uint8Array(32) 发送到 localStorage、解码并转换回 Uint8Array(32) 后如何获取它。下面你会看到我尝试对私钥进行字符串化,然后对其进行 base64 编码,以便将其发送到 localStorage 以供以后使用:

在这里,您会注意到我正在尝试获取私钥,以便我可以通过从 localStorage 获取 base64 编码的字符串并从中创建一个新的 Uint8Array 来生成相应的公钥:

在这里您会看到输入的结果与输出的结果不同:

出去

我认为问题可能是使用 JSON.stringify 将嵌套的 Uint8Array 转换为字符串,但我不确定是否有其他方法可以使此功能正常运行。

为什么对象输入与对象输出不一样?我想学习如何做到这一点,帮助对我来说意味着世界。

0 投票
1 回答
97 浏览

javascript - Javascript,IndexedDB,存储 Uint8Array,给出错误

自从我开始阅读 IndexedDB 以来已经有几个小时了,我遇到了一些问题。这是我从https://medium.com/@AndyHaskell2013/build-a-basic-web-app-with-indexeddb-8ab4f83f8bdahttps://gist.github.com/JamesMessinger/a0d6389a5d0e3a24814b遵循的代码,它只是放为了理解起见,在一起很糟糕。所以我想要做的是将密钥存储到 IndexedDB 中,以便我可以使用它来使用 ECIES 方案加密事物。

相关代码(先后顺序):

由于某种原因,在前端脚本中调用 genSKey 时,我收到以下控制台错误:

控制台记录了更多内容,但其他内容与手头的问题无关。我不确定自己做错了什么,而且我整天都在做这件事。一些洞察力对我来说意味着世界,谢谢。

0 投票
1 回答
166 浏览

javascript - 为什么 new Uint8ClampedArray 的 new ImageData 会创建黑白图像

我将 2 个图像拼接在一起以创建一个图像。叠加可能是一个更好的术语。第一张图如下。

第一张图片 第二张图片如下: 第二张图片

在做了一些画布魔术之后,我可以使用两个画布元素覆盖最终图像,看起来像这样

两个画布叠加

然后,我抓取两个图像的图像数据并将图像数据“缝合”在一起,以使用以下技术从覆盖到单个画布中的 2 个画布元素重新创建单个图像的错觉

前景和背景都是使用画布 API 中内置的 ctx.getImageData 函数的 ImageData。然后,我从新的 Uint8ClampedArray 重新创建新的图像数据,并将其输入到新 ImageData 的构造函数中。结果正是我想要的,除了它只有黑白!为什么 RGB 值不结转?这对我来说没有意义,有人可以解释为什么,尽管我携带了图像数据,但它只将其保存为黑白?

这是最终结果

在此处输入图像描述

0 投票
1 回答
164 浏览

video - 十六进制在毫秒内发生了什么?

我有价值观88 40 B0 00。它们是十六进制的。我不明白怎么做,但它们代表了几纳秒。我需要帮助来理解这份概述 Matroska 和 WebM 元数据编码的文档。我对此比较陌生,但我正在使用 JavaScript 来更改文件持续时间。我目前正在使用的作品,但目标是知道如何设置 WebM 视频文件的自定义持续时间。该文档显示了持续时间参数的以下内容:

  • 元素名称
    • 期间
  • EBML 树中的级别
    • 2
  • 元素 ID 显示为八位字节
    • 0x4489
  • 强制的
    • 错误的
  • 可能出现多次
    • 错误的
  • 包含在
    • 1
    • 2
    • 3
    • 4
  • 可在 WebM 中使用
    • 真的
  • 描述
    • 基于 TimestampScale 的分段持续时间(以纳秒为单位)

我正在使用默认的时间戳刻度 ( 1000000)。我的问题是如何获得这些十六进制值,并将它们转换为hours:minutes:seconds:milliseconds. 我只是被难住了:(0x8840B000对我没有帮助。

0 投票
1 回答
127 浏览

javascript - 为什么 Uint8Array.toString('hex') 不返回十六进制?

鉴于此(基于另一个答案):

为什么它不以十六进制返回?

编辑,我困惑的根源。我正在使用hypersdk 库。这允许.toString('hex')模式。

当我切换到烧杯时,我不能再使用它了。

编辑2:

我认为我的困惑是因为我使用的是基于 node.js 的Buffer对象:https ://nodejs.org/api/buffer.html#buffer_buf_tostring_encoding_start_end

这是使用 hypersdk 浏览器化的,这样缓冲区被表示为一个TypedArray对象,toString原型方法被覆盖以匹配Buffer版本。

0 投票
1 回答
64 浏览

arrays - 整数转数组说明

请帮忙

我知道您正在阅读本文,如果没有答案,我将不胜感激,因为我觉得只有我一个人试图解决这个问题。

这是如何运作的?

我已经彻底阅读了这份文件。它提到了一个名为 TimestampScale 的元素。我已经下载了大约 30 个 WebM 示例文件,发现HEX { 0x2AD7B1or 2A D7 B1or ['2A','D7','B1']} 或NON-HEX integers { 42 215 177or [42, 215, 177]} 后面的值总是相同的:HEX { 0x830F4240or 83 0F 42 40or ['83', '0F', '42', '40']} or NON-HEX integers { 131 15 66 64or [131,15,66,64]}。这些值都应该是1000000Matroska Element Specification 中所述的默认值。所以问题是......0x830F4240最终如何1000000

上面的 Incase 对您来说太草率了,或者您想要更多解释:

所有值如何以 HEX 和整数显示:

目标:

目标是弄清楚如何将值转换为 make 1000000,这样我就可以在 Matroska 元素规范中的其他元素上使用这种转换(如持续时间转换)。

0 投票
1 回答
46 浏览

javascript - 如何*反转* JavaScripts DataView?

我知道这个问题的措辞很奇怪,所以让我用两个例子来解释一下。

示例 1
下面的代码将一系列值[64, 176, 0, 86, 68, 97, 136, 8]转换为 float 4096.336980910979

输入 float 时如何反转它以获取一系列值?[64, 176, 0, 86, 68, 97, 136, 8]4096.336980910979

示例 2:
下面的代码将一系列值[70, 253, 192, 0]转换为 float 32480

输入 float 时如何反转它以获取一系列值?[70, 253, 192, 0]32480

0 投票
0 回答
477 浏览

node.js - 如何在 MongoDB 中存储 ArrayBuffer?

我正在尝试构建一个 Electron React App 来捕获屏幕的短视频但无法存储视频(作为更大的“有效负载”对象的一部分:
{video_buffer: xxx, time_stamp: 3456345 ...}

视频是在渲染器进程中通过API 创建的MediaStreamMediaRecorder然后转换为 Blob。这是一些示例代码:-

当我转换为 URL 并将其设置为 Video 元素 src 时,缓冲区有效

let videoURL = URL.createObjectURL(blob)

视频很短,最大占用约 2.5MB。

我只能通过IPC(而不是 Blob)发送缓冲区(或 URL)。

在主要过程中,我使用 Mongoose 和模式:

new payloadSchema = {video_buffer: {type: Buffer}}

但这不起作用,大概是因为 buffer 是 anArrayBuffer而不是 a Data Viewor TypedArray

所以我尝试将它转换为一个Uint8Array TypedArray对象:

const new_buffer = new Uint8Array(buffer)

但我在保存时收到此错误:

然后我尝试将其转换Uint8Array为十六进制编码字符串,然后将其存储为缓冲区。

在终端中查询 MongoDB 时,它存储了字符串:

const buff_to_hex_string = new_buffer.toString('hex')

然后像以前一样通过 Mongoose 保存它:(Schema {type: Buffer})

这似乎适用于 MongoDB 的以下输出:

保存的 Payload Schema 的输出是:

问题:在检索存储的缓冲区对象时,将其转换回 ArrayBuffer 以便我可以在视频元素中播放它的最简单方法是什么?

我需要向后转换 --> 十六进制字符串 --> Uint8Array --> ArrayBuffer ---> Blob ---> URL 吗?

我已经尝试了很多提供的方法,但都没有奏效。

任何帮助将非常感激。

谢谢。

0 投票
0 回答
43 浏览

javascript - 在 js 和 php 中使用 rlp 编码(前缀编码)时我有不同的结果

我在 php( https://github.com/MinterTeam/php-rlp)和 js(https://www.npmjs.com/package/rlp )中使用包 rlp 进行前缀编码。当我将 rlp 与数组一起使用时,例如 rlp->encode([1,2,3,4]),我在 php 和 js 中的结果相同,但是当我在 js 中使用 uint8array 时,例如 rlp->encode(new Uint8array([1,2,3,4])),我有不同的结果。php中的类比Uint8array是什么?