Baseline Widely available *
DataView
ãã¥ã¼ã¯ ArrayBuffer
ã®å¤æ§ãªæ°å¤åãããã©ãããã©ã¼ã ã®ã¨ã³ãã£ã¢ã³ã«é¢ä¿ãªãèªã¿æ¸ãããããã®ä½æ°´æºã¤ã³ã¿ã¼ãã§ã¤ã¹ãæä¾ãã¾ãã
å¤ãã¤ãã®æ°å¤å½¢å¼ã¯ããã·ã³ã¢ã¼ããã¯ãã£ã«ãã£ã¦ã¡ã¢ãªã¼å
ã§ã®è¡¨ç¾ãç°ãªãã¾ãã説æã¯ã¨ã³ãã£ã¢ã³ãåç
§ãã¦ãã ããã DataView
ã®ã¢ã¯ã»ãµã¼ã¯ããã©ãããã©ã¼ã ã¢ã¼ããã¯ãã£ã®ã¨ã³ãã£ã¢ã³ã«é¢ä¿ãªããã¼ã¿ã«ã¢ã¯ã»ã¹ããæ¹æ³ãæç¢ºã«å¶å¾¡ããææ®µãæä¾ãã¾ãã
var littleEndian = (function () {
var buffer = new ArrayBuffer(2);
new DataView(buffer).setInt16(0, 256, true /* ãªãã«ã¨ã³ãã£ã¢ã³ */);
// Int16Array ã¯ãã©ãããã©ã¼ã ã®ã¨ã³ãã£ã¢ã³ã使ç¨ãã
return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true ã¾ã㯠false
64 ãããæ´æ°å¤
ä¸é¨ã®ãã©ã¦ã¶ã¼ã¯ DataView.prototype.setBigInt64()
ããã³ DataView.prototype.setBigUint64()
ã«å¯¾å¿ãã¦ãã¾ããããã®ãããåãã©ã¦ã¶ã¼ã§åä½ããã³ã¼ãã§ 64 ãããæä½ãã§ããããã«ããã«ã¯ãç¬èªã® getUint64()
颿°ãå®è£
ãã Number.MAX_SAFE_INTEGER
ã¾ã§ã®ç²¾åº¦ã®å¤ãåãåããããã«ãã¾ããããã§ååãªå ´åãããã§ãããã
function getUint64(dataview, byteOffset, littleEndian) {
// 64 ãããæ°ã 2 ã¤ã® 32 ããã (4 ãã¤ã) ã®é¨åã«åå²ãã
const left = dataview.getUint32(byteOffset, littleEndian);
const right = dataview.getUint32(byteOffset + 4, littleEndian);
// 2 ã¤ã® 32 ãããã®å¤ãçµåãã
const combined = littleEndian
? left + 2 ** 32 * right
: 2 ** 32 * left + right;
if (!Number.isSafeInteger(combined))
console.warn(combined, "exceeds MAX_SAFE_INTEGER. Precision may be lost");
return combined;
}
ä»ã«ããå®å
¨ãª 64 ãããã®å¹
ãå¿
è¦ãªå ´åãBigInt
ã使ãããã¨ãã§ãã¾ããããã«è¨ãã°ããã¤ãã£ãã® BigInt ã¯ã¦ã¼ã¶ã¼ã©ã³ãã©ã¤ãã©ãªã¼ã®åçåãããã¯ããã«éãã®ã§ãããJavaScript ã§ã¯ BigInt ã¯å¯å¤é·ã§ããã¨ããæ§è³ªä¸ã常㫠32 ãããæ´æ°ãããã¯ããã«é
ããªãã¾ãã
const BigInt = window.BigInt,
bigThirtyTwo = BigInt(32),
bigZero = BigInt(0);
function getUint64BigInt(dataview, byteOffset, littleEndian) {
// 64 ãããæ°ã 2 ã¤ã® 32 ããã (4 ãã¤ã) ã®é¨åã«åå²ãã
const left = BigInt(dataview.getUint32(byteOffset | 0, !!littleEndian) >>> 0);
const right = BigInt(
dataview.getUint32(((byteOffset | 0) + 4) | 0, !!littleEndian) >>> 0,
);
// 2 ã¤ã® 32 ãããã®å¤ãçµåãã¦è¿ã
return littleEndian
? (right << bigThirtyTwo) | left
: (left << bigThirtyTwo) | right;
}
ã³ã³ã¹ãã©ã¯ã¿ã¼
DataView()
æ°ãã DataView
ãªãã¸ã§ã¯ãã使ãã¾ãã
DataView.prototype.buffer
ãã®ãã¥ã¼ã«ãã£ã¦åç
§ããã ArrayBuffer
ãæ§ç¯æã«è¨å®ããããããèªã¿åãå°ç¨ã§ãã
DataView.prototype.byteLength
ArrayBuffer
ã®éå§ä½ç½®ãããã®ãã¥ã¼ã® (ãã¤ãåä½ã®) é·ããæ§ç¯æã«è¨å®ããããããèªã¿åãå°ç¨ã§ãã
DataView.prototype.byteOffset
ArrayBuffer
ã®éå§ä½ç½®ãããã®ãã¥ã¼ã® (ãã¤ãåä½ã®) ãªãã»ãããæ§ç¯æã«è¨å®ããããããèªã¿åãå°ç¨ã§ãã
DataView.prototype.getInt8()
ãã¥ã¼ã®éå§ä½ç½®ããæå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ä»ã 8 ãããæ´æ°å¤ (byte) ãåå¾ãã¾ãã
DataView.prototype.getUint8()
ãã¥ã¼ã®éå§ä½ç½®ããæå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ç¡ã 8 ãããæ´æ°å¤ (unsigned byte) ãåå¾ãã¾ãã
DataView.prototype.getInt16()
ãã¥ã¼ã®éå§ä½ç½®ããæå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ä»ã 16 ãããæ´æ°å¤ (short) ãåå¾ãã¾ãã
DataView.prototype.getUint16()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ç¡ã 16 ãããæ´æ°å¤ (unsigned short) ãåå¾ãã¾ãã
DataView.prototype.getInt32()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãã 32 ãããæ´æ°å¤ (long) ãåå¾ãã¾ãã
DataView.prototype.getUint32()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ç¡ã 32 ãããæ´æ°å¤ (unsigned long) ãåå¾ãã¾ãã
DataView.prototype.getFloat32()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãã 32 ãããæµ®åå°æ°ç¹æ° (float) ãåå¾ãã¾ãã
DataView.prototype.getFloat64()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãã 64 ãããæµ®åå°æ°ç¹æ° (double) ãåå¾ãã¾ãã
DataView.prototype.getBigInt64()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãã 64 ãããæ´æ°å¤(long long) ãåå¾ãã¾ãã
DataView.prototype.getBigUint64()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãªã 64 ãããæ´æ°å¤ (unsigned long long) ãåå¾ãã¾ãã
DataView.prototype.setInt8()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãã 8 ãããæ´æ°å¤ (byte) ãæ ¼ç´ãã¾ãã
DataView.prototype.setUint8()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãªã 8 ãããæ´æ°å¤ (unsigned byte) ãæ ¼ç´ãã¾ãã
DataView.prototype.setInt16()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãã 16 ãããæ´æ°å¤ (short) ãæ ¼ç´ãã¾ãã
DataView.prototype.setUint16()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ç¡ã 16 ãããæ´æ°å¤ (unsigned short) ãæ ¼ç´ãã¾ãã
DataView.prototype.setInt32()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãã 32 ãããæ´æ°å¤ (long) ãæ ¼ç´ãã¾ãã
DataView.prototype.setUint32()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ç¡ã 32 ãããæ´æ°å¤ (unsigned long) ãæ ¼ç´ãã¾ãã
DataView.prototype.setFloat32()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãã 32 ãããæµ®åå°æ°ç¹æ° (float) ãæ ¼ç´ãã¾ãã
DataView.prototype.setFloat64()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãã 64 ãããæµ®åå°æ°ç¹æ° (double) ãæ ¼ç´ãã¾ãã
DataView.prototype.setBigInt64()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãã 64 ãããæ´æ°å¤ (long long) ãæ ¼ç´ãã¾ãã
DataView.prototype.setBigUint64()
ãã¥ã¼ã®éå§ä½ç½®ããã®æå®ããããã¤ãåä½ã®ãªãã»ããä½ç½®ã«ãã符å·ãªã 64 ãããæ´æ°å¤ (unsigned long long) ãæ ¼ç´ãã¾ãã
var buffer = new ArrayBuffer(16);
var view = new DataView(buffer, 0);
view.setInt16(1, 42);
view.getInt16(1); // 42
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
DataView
ã®ããªãã£ã«ã¯ core-js
ã§å©ç¨ã§ãã¾ãDataView
API ããã¹ã¦ã®ãã©ã¦ã¶ã¼ã Node.js ã«å±éããããªãã£ã«ã® JavaScript ã©ã¤ãã©ãªã¼ArrayBuffer
SharedArrayBuffer
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4