Javascript 从普通数组构造UINT8数组在这里有意义吗?

Javascript 从普通数组构造UINT8数组在这里有意义吗?,javascript,Javascript,我想在IE9中使用以下库,但后者不支持Uint8Array或一般类型的数组 Uint8Array包装器在代码中只使用了一次,但对我来说,它实际上似乎是多余的。你能证实吗 第71行:(只是一个从JPEG中提取Exif信息的非常小的库) insertExif函数返回一个普通数组,exifManipulation然后在base64编码之前将其放入Uint8Array: var image = this.exifManipulation(resizedFileBase64 /*plain string*

我想在IE9中使用以下库,但后者不支持Uint8Array或一般类型的数组

Uint8Array包装器在代码中只使用了一次,但对我来说,它实际上似乎是多余的。你能证实吗

第71行:(只是一个从JPEG中提取Exif信息的非常小的库)

insertExif函数返回一个普通数组,exifManipulation然后在base64编码之前将其放入Uint8Array:

var image = this.exifManipulation(resizedFileBase64 /*plain string*/, segments /*plain array of plain arrays*/);
this.encode64(image);

...

ExifRestorer.exifManipulation = function(resizedFileBase64, segments)
{
        var exifArray = this.getExifArray(segments), /*plain array*/
            newImageArray = this.insertExif(resizedFileBase64, exifArray), /*plain array*/
            aBuffer = new Uint8Array(newImageArray);

        return aBuffer;
};

ExifRestorer.encode64 = function(input)
{
    var output = "",
        chr1, chr2, chr3 = "",
        enc1, enc2, enc3, enc4 = "",
        i = 0;

    do {
        chr1 = input[i++];
        chr2 = input[i++];
        chr3 = input[i++];

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2)) {
           enc3 = enc4 = 64;
        } else if (isNaN(chr3)) {
           enc4 = 64;
        }

        output = output +
           this.KEY_STR.charAt(enc1) +
           this.KEY_STR.charAt(enc2) +
           this.KEY_STR.charAt(enc3) +
           this.KEY_STR.charAt(enc4);
        chr1 = chr2 = chr3 = "";
        enc1 = enc2 = enc3 = enc4 = "";
    } while (i < input.length);

    return output;
};
var image=this.exifManipulation(resizedFileBase64/*普通字符串*/,段/*普通数组的普通数组*/);
这个.encode64(图像);
...
ExifRestorer.exifManipulation=函数(调整大小的数据库64,段)
{
var exifArray=this.getExifArray(段),/*普通数组*/
newImageArray=this.insertExif(resizedFileBase64,exifArray),/*普通数组*/
aBuffer=新的UINT8阵列(新的图像阵列);
回报者;
};
ExifRestorer.encode64=函数(输入)
{
var输出=”,
chr1,chr2,chr3=“”,
附件1、附件2、附件3、附件4=“”,
i=0;
做{
chr1=输入[i++];
chr2=输入[i++];
chr3=输入[i++];
enc1=chr1>>2;
enc2=((chr1&3)>4);
enc3=((chr2&15)>6);
enc4=chr3&63;
if(isNaN(chr2)){
enc3=enc4=64;
}否则如果(isNaN(chr3)){
enc4=64;
}
输出=输出+
这是一个关键的字符(附件1)+
这是一个关键的字符(附件2)+
这是一个关键的字符(附录3)+
这是关键的特征(附录4);
chr1=chr2=chr3=“”;
enc1=enc2=enc3=enc4=“”;
}而(i
据我所知,它在内部使用普通数组。它没有像类型化数组规范最初希望的那样使用Uint8Array作为ArrayBuffer上的视图,它只是将普通数组传递给构造函数

我看不出在这里将其放入Uint8Array的意义,而不是直接返回底层数字数组(对于单个字节,[0255]范围内的每个元素)。事实上,在我使用IE9在Windows7上进行的测试中,代码在没有Uint8Array包装器的情况下确实可以工作

我是否遗漏了什么,或者是否存在直接从基础数字数组而不是通过Uint8Array视图访问单个元素会在encode64函数中返回错误或不可靠结果的可能场景或环境?我不能完全想象


没有官方支持图书馆,因此我在这里提出问题。谢谢大家的关注。

请在问题本身中发布相关代码行,好吗?@Bergi:编辑了这篇文章,希望对Sanybody有所帮助?:(如果问题不清楚,请告诉我。