You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript:期望获取数值却得到null,如何正确取ArrayBuffer首字节?

解决ArrayBuffer无法直接索引导致nonce值异常的问题

问题原因

crypto.subtle.digest()返回的是ArrayBuffer类型,这种类型本身不支持通过下标(如[0])直接访问内部字节数据,所以msgBuffer[0]实际是undefined,和初始值0相加后得到NaN(你看到的null属于表述误差)。

解决方法

把ArrayBuffer转换为TypedArray(比如Uint8Array),TypedArray专门用于访问二进制数据的单个元素:

var msgBuffer = await crypto.subtle.digest('SHA-256', toHash); // 返回ArrayBuffer
var byteArray = new Uint8Array(msgBuffer); // 将ArrayBuffer转为Uint8Array
var nonce = 0;
nonce += byteArray[0]; // 正确获取第一个字节的数值(0-255之间)

补充说明

Uint8Array会将ArrayBuffer中的每个字节映射为0到255的整数,完全满足你提取单个字节值的需求。如果需要处理其他位数的数值,也可以根据场景选择Uint16Array、Int32Array等其他TypedArray类型。

内容的提问来源于stack exchange,提问作者Sean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:54:35