function compareDataViews(view1, view2) {
if (view1.byteLength !== view2.byteLength) {
return false;
}
const view1Array = new Uint8Array(view1.buffer);
const view2Array = new Uint8Array(view2.buffer);
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 : " + compareDataViews(view1, view2));
console.log("view2 == view3 : " + compareDataViews(view2, view3));
console.log("view1 == view3 : " + compareDataViews(view1, view3));
ZnVuY3Rpb24gY29tcGFyZURhdGFWaWV3cyh2aWV3MSwgdmlldzIpIHsKICBpZiAodmlldzEuYnl0ZUxlbmd0aCAhPT0gdmlldzIuYnl0ZUxlbmd0aCkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICBjb25zdCB2aWV3MUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodmlldzEuYnVmZmVyKTsKICBjb25zdCB2aWV3MkFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodmlldzIuYnVmZmVyKTsKICBmb3IgKGxldCBpID0gMDsgaSA8IHZpZXcxQXJyYXkubGVuZ3RoOyBpKyspIHsKICAgIGlmICh2aWV3MUFycmF5W2ldICE9PSB2aWV3MkFycmF5W2ldKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CiAgcmV0dXJuIHRydWU7Cn0KCmNvbnN0IGRhdGExID0gbmV3IFVpbnQ4QXJyYXkoWzB4MTIsIDB4MzQsIDB4NTYsIDB4NzhdKS5idWZmZXI7CmNvbnN0IGRhdGEyID0gbmV3IFVpbnQ4QXJyYXkoWzB4NTYsIDB4NzhdKS5idWZmZXI7Cgpjb25zdCB2aWV3MSA9IG5ldyBEYXRhVmlldyhkYXRhMSwgMCwgMik7CmNvbnN0IHZpZXcyID0gbmV3IERhdGFWaWV3KGRhdGExLCAyLCAyKTsKY29uc3QgdmlldzMgPSBuZXcgRGF0YVZpZXcoZGF0YTIpOwoKY29uc29sZS5sb2coInZpZXcxIDogIiArIHZpZXcxLmdldFVpbnQxNigwKS50b1N0cmluZygxNikpOwpjb25zb2xlLmxvZygidmlldzIgOiAiICsgdmlldzIuZ2V0VWludDE2KDApLnRvU3RyaW5nKDE2KSk7CmNvbnNvbGUubG9nKCJ2aWV3MyA6ICIgKyB2aWV3My5nZXRVaW50MTYoMCkudG9TdHJpbmcoMTYpKTsKY29uc29sZS5sb2coInZpZXcxID09IHZpZXcyIDogIiArIGNvbXBhcmVEYXRhVmlld3ModmlldzEsIHZpZXcyKSk7CmNvbnNvbGUubG9nKCJ2aWV3MiA9PSB2aWV3MyA6ICIgKyBjb21wYXJlRGF0YVZpZXdzKHZpZXcyLCB2aWV3MykpOwpjb25zb2xlLmxvZygidmlldzEgPT0gdmlldzMgOiAiICsgY29tcGFyZURhdGFWaWV3cyh2aWV3MSwgdmlldzMpKTsK