জাভাস্ক্রিপ্ট ArrayBuffer অবজেক্ট একটি জেনেরিক, ফিক্সড-লেন্থ র বাইনারি ডেটা বাফার রিপ্রেজেন্ট করতে ব্যবহৃত হয়। ArrayBuffer-এর কন্টেন্ট সরাসরি ম্যানিপুলেট করা যায় না; এর জন্য DataView বা টাইপড অ্যারে (TypedArray) অবজেক্ট তৈরি করতে হয়। DataView দিয়ে রিড এবং রাইট দুটোই করা যায়।
সিনট্যাক্স
new ArrayBuffer(byteSize)
byteSize প্যারামিটার বাফারের সাইজ বাইটে নির্দিষ্ট করে।
উদাহরণ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.sample { font-size: 20px; font-weight: 500; }
</style>
</head>
<body>
<h1>JavaScript ArrayBuffer object</h1>
<div class="sample"></div>
<button class="Btn">CLICK HERE</button>
<h3>Click on the above button to see the array buffer object contents in binary</h3>
<script>
let fillEle = document.querySelector(".sample");
var buffer = new ArrayBuffer(8);
var view1 = new DataView(buffer);
view1.setInt16(0, 0x2721);
fillEle.innerHTML = view1.getInt16(0).toString(16);
document.querySelector('.Btn').addEventListener('click', () => {
fillEle.innerHTML = view1.getInt16(0).toString(2);
});
</script>
</body> </html>
আউটপুট
প্রথমে হেক্স: 2721। ক্লিক করলে বাইনারি: 10011100100001
ব্যাখ্যা
new ArrayBuffer(8)→ ৮ বাইট (৬৪ বিট) alok কোরেDataView→ বাফার পড়া/লেখার ইন্টারফেসsetInt16(0, 0x2721)→ অফসেট ০-এ ১৬-বিট ইন্টিজার লিখলো (বিগ-এন্ডিয়ান ডিফল্ট)getInt16(0).toString(16)→ হেক্সাডেসিমাল স্ট্রিংgetInt16(0).toString(2)→ বাইনারি স্ট্রিং
TypedArray ব্যবহার (সরলতর)
const buffer = new ArrayBuffer(8);
const int16 = new Int16Array(buffer);
int16[0] = 0x2721;
console.log(int16[0].toString(2)); // "10011100100001"
ArrayBuffer ব্যবহার ক্ষেত্র
- ফাইল আপলোড/ডাউনলোড (Blob, FileReader)
- WebSocket বাইনারি মেসেজ
- Canvas/WebGL পিক্সেল ডেটা
- WebAssembly মেমোরি শেয়ারিং
- ক্রিপ্টোগ্রাফি (Crypto API)