如果我有以下代码:
var uInt8Array = new Uint8Array([0, 1, 2]);
var number = uInt8Array[1];
数字会被解析为 64 位 float 还是保留 8 位无符号整数?
最佳答案
Uint8Array 数据类型的存在是为了在某些特定情况下节省内存。在处理单个元素时,节省的内存相当不重要,但在处理大型数组时就变得很重要,因为每个元素消耗的内存是正常情况下的 1/8。
处理媒体(即音频、图像和视频)时,这一点变得很重要。
1 兆像素图像将存储为 400 万个元素,每个元素 8 位。 r、g、b 和 a 各 8 位。这当然会消耗 4,000,000 字节。如果此数据类型不存在并且图像仍存储在具有 4 个元素的数组中,则此内存需求将膨胀到 32,000,000 字节。
您可以通过编写简单的测试代码并将监视放在变量上来自行测试。初始数组显示为 Uint8Array,而从中提取的元素显示为标准数字对象。
这是您提供的代码和监 window 口中的变量的屏幕截图。
关于Javascript 将 Uint8Array[x] 分配给新的 var : type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28832585/