function isDataViewsEquals(view1, view2) {
if (view1.byteLength !== view2.byteLength) {
return false;
}
const view1Array = new Uint8Array(view1.buffer, view1.byteOffset, view1.byteLength);
const view2Array = new Uint8Array(view2.buffer, view2.byteOffset, view2.byteLength);
for (let i = 0; i < view1Array.length; i++) {
if (view1Array[i] !== view2Array[i]) {
return false;
}
}
return true;
}
const data1 = new Uint8Array([0x12, 0x34, 0x56, 0x78]).buffer;
const data2 = new Uint8Array([0x56, 0x78]).buffer;
const view1 = new DataView(data1, 0, 2);
const view2 = new DataView(data1, 2, 2);
const view3 = new DataView(data2);
console.log("view1 : " + view1.getUint16(0).toString(16));
console.log("view2 : " + view2.getUint16(0).toString(16));
console.log("view3 : " + view3.getUint16(0).toString(16));
console.log("view1 == view2 : " + isDataViewsEquals(view1, view2));
console.log("view2 == view3 : " + isDataViewsEquals(view2, view3));
console.log("view1 == view3 : " + isDataViewsEquals(view1, view3));
ZnVuY3Rpb24gaXNEYXRhVmlld3NFcXVhbHModmlldzEsIHZpZXcyKSB7CiAgaWYgKHZpZXcxLmJ5dGVMZW5ndGggIT09IHZpZXcyLmJ5dGVMZW5ndGgpIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgY29uc3QgdmlldzFBcnJheSA9IG5ldyBVaW50OEFycmF5KHZpZXcxLmJ1ZmZlciwgdmlldzEuYnl0ZU9mZnNldCwgdmlldzEuYnl0ZUxlbmd0aCk7CiAgY29uc3QgdmlldzJBcnJheSA9IG5ldyBVaW50OEFycmF5KHZpZXcyLmJ1ZmZlciwgdmlldzIuYnl0ZU9mZnNldCwgdmlldzIuYnl0ZUxlbmd0aCk7CiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWV3MUFycmF5Lmxlbmd0aDsgaSsrKSB7CiAgICBpZiAodmlldzFBcnJheVtpXSAhPT0gdmlldzJBcnJheVtpXSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQogIHJldHVybiB0cnVlOwp9Cgpjb25zdCBkYXRhMSA9IG5ldyBVaW50OEFycmF5KFsweDEyLCAweDM0LCAweDU2LCAweDc4XSkuYnVmZmVyOwpjb25zdCBkYXRhMiA9IG5ldyBVaW50OEFycmF5KFsweDU2LCAweDc4XSkuYnVmZmVyOwoKY29uc3QgdmlldzEgPSBuZXcgRGF0YVZpZXcoZGF0YTEsIDAsIDIpOwpjb25zdCB2aWV3MiA9IG5ldyBEYXRhVmlldyhkYXRhMSwgMiwgMik7CmNvbnN0IHZpZXczID0gbmV3IERhdGFWaWV3KGRhdGEyKTsKCmNvbnNvbGUubG9nKCJ2aWV3MSA6ICIgKyB2aWV3MS5nZXRVaW50MTYoMCkudG9TdHJpbmcoMTYpKTsKY29uc29sZS5sb2coInZpZXcyIDogIiArIHZpZXcyLmdldFVpbnQxNigwKS50b1N0cmluZygxNikpOwpjb25zb2xlLmxvZygidmlldzMgOiAiICsgdmlldzMuZ2V0VWludDE2KDApLnRvU3RyaW5nKDE2KSk7CmNvbnNvbGUubG9nKCJ2aWV3MSA9PSB2aWV3MiA6ICIgKyBpc0RhdGFWaWV3c0VxdWFscyh2aWV3MSwgdmlldzIpKTsKY29uc29sZS5sb2coInZpZXcyID09IHZpZXczIDogIiArIGlzRGF0YVZpZXdzRXF1YWxzKHZpZXcyLCB2aWV3MykpOwpjb25zb2xlLmxvZygidmlldzEgPT0gdmlldzMgOiAiICsgaXNEYXRhVmlld3NFcXVhbHModmlldzEsIHZpZXczKSk7Cg==