MDN kısmında, mevcut tüm ArrayBufferView
alt sınıflarından bir bakış bulabilirsiniz:
Type | Size | Description | Equivalent C type
-------------+------+---------------------------------------+------------------
Int8Array | 1 | 8-bit twos complement signed integer | signed char
Uint8Array | 1 | 8-bit unsigned integer | unsigned char
Int16Array | 2 | 16-bit twos complement signed integer | short
Uint16Array | 2 | 16-bit unsigned integer | unsigned short
Int32Array | 4 | 32-bit twos complement signed integer | int
Uint32Array | 4 | 32-bit unsigned integer | unsigned int
Float32Array | 4 | 32-bit IEEE floating point number | float
Float64Array | 8 | 64-bit IEEE floating point number | double
Temelde, bu dizinin her bir öğesi işgal ne hafıza boşlukları listeler ve düz sayı veya FP numara buysa. Hangi dilleri bildiğinizden emin değilim, ancak Java'yı da kapsamazsa, temelde byte[]
,, short[]
, int[]
, float[]
ve double[]
'da yaptığınız gibi aynı seçimdir. bölüm önemli değil).
Resimler gibi ikili veriler genellikle bayt dizisi olarak gösterilir. Kısa/uzun/uzun bir dizi de olabilir, ancak bu bir bellek alanı kaybıdır. Bir 100 KB görüntüsünü saklarsanız ("B" nin bayt dizisi yerine bir dizide 8 bit olduğunu gösterir), bu durumda 400 KB'lık bir bellek kaplar, bu da 300 KB'lık bir israftır. Yani en küçük olanı, Int8Array
, zaten bellek alanı ile ilgili yeterli olurdu. Hiç programlı o imzasız dizi olarak bu durumda — çok olası değildir — çapraz isterseniz her öğe 0
255
yerine değerlere 127
için -128
değerlerini tutan yerine nerede, o zaman Uint8Array
tercih edebilir.
Sunucudan bir görüntü dosyası indiren, geçici yerel depolama alanına kaydeden ve bunu bir <img>
gövde içinde sunan bir copy'n'paste'n'runnable başlatma örneğidir (bunun için küçük jQuery gereklidir) Bölüm). Bu eserler current devletin olduğu gibi,
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.TEMPORARY, 1024*1024, startDownload, errorHandler);
var errorHandler = function(error) {
console.log('FS error: ' + error);
}
var xhr = new XMLHttpRequest();
xhr.open('GET', 'image.png', true);
xhr.responseType = 'arraybuffer';
function startDownload(fileSystem) {
xhr.onload = function(event) {
var content = new Int8Array(this.response);
fileSystem.root.getFile('/image.png', { 'create': true }, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(event) {
$('body').append('<p>Image successfully downloaded:</p>')
.append('<p><img src="' + fileEntry.toURL() + '"/></p>');
};
var blob = new Blob([content], { type: 'image/png' });
fileWriter.write(blob);
}, errorHandler);
});
}
xhr.send();
}
Not: Bu örnek dosya indirilmiş olan image.png
dosyası (veya HTML JS satır içi durumunda) JS ile aynı taban klasöründe bulunan varsayar yalnızca Chrome'da.
JSON'u kullanma hakkında ne düşünüyorsunuz? –