root / HServer / 00.Server / 00.Program / node_modules / arraybuffer.slice / index.js
이력 | 보기 | 이력해설 | 다운로드 (725 Bytes)
1 |
/**
|
---|---|
2 |
* An abstraction for slicing an arraybuffer even when
|
3 |
* ArrayBuffer.prototype.slice is not supported
|
4 |
*
|
5 |
* @api public
|
6 |
*/
|
7 |
|
8 |
module.exports = function(arraybuffer, start, end) { |
9 |
var bytes = arraybuffer.byteLength;
|
10 |
start = start || 0;
|
11 |
end = end || bytes; |
12 |
|
13 |
if (arraybuffer.slice) { return arraybuffer.slice(start, end); } |
14 |
|
15 |
if (start < 0) { start += bytes; } |
16 |
if (end < 0) { end += bytes; } |
17 |
if (end > bytes) { end = bytes; }
|
18 |
|
19 |
if (start >= bytes || start >= end || bytes === 0) { |
20 |
return new ArrayBuffer(0); |
21 |
} |
22 |
|
23 |
var abv = new Uint8Array(arraybuffer); |
24 |
var result = new Uint8Array(end - start); |
25 |
for (var i = start, ii = 0; i < end; i++, ii++) { |
26 |
result[ii] = abv[i]; |
27 |
} |
28 |
return result.buffer;
|
29 |
}; |