The btoa() function takes a JavaScript string as a parameter. In JavaScript strings are represented using the UTF-16 character encoding: in this encoding, strings are represented as a sequence of 16-bit (2 bytes) units.
But bota() function is not available in node js to achieve the same functionality we can use the buffer in node js.
// Try in browser console
btoa('Hello india') // "SGVsbG8gaW5kaWE="The same result we can achieve with the help of node Js buffer.
Buffer.from('Hello india').toString('base64') // SGVsbG8gaW5kaWE=Table of Contents
What is buffer?
A buffer is an area of memory. It represents a fixed-size chunk of memory (can’t be resized) allocated outside of the V8 JavaScript engine. You can think of a buffer like an array of integers, which each represent a byte of data.
Buffers were introduced to help developers deal with binary data, in an ecosystem that traditionally only dealt with strings rather than binaries.
How to create a buffer
A buffer is created using the Buffer.from(), Buffer.alloc(), and Buffer.allocUnsafe() methods.
Access the content of a buffer
A buffer, being an array of bytes, can be accessed like an array:
const buf = Buffer.from('Hi !!')
console.log(buf) // <Buffer 48 69 20 21 21>
console.log(buf[0]) //72
console.log(buf[1]) //105
console.log(buf[2]) //32
console.log(buf[3]) //33Those numbers are the UTF-8 bytes that identify the characters in the buffer (H → 72, i → 105, ! → 33). This happens because Buffer.from() uses UTF-8 by default. Keep in mind that some characters may occupy more than one byte in the buffer (é → 195 169).
You can print complete strings using toString method.
console.log(buf.toString()); // Hi !!
Get length of buffer
const buf = Buffer.from('Hi !!');
console.log(buf.length); // 5Iterate over the contents of a buffer
const buf = Buffer.from('Hi !!')
for (const item of buf) {
  console.log(item) //72 105 32 33
}Slice a buffer
If you want to create a partial visualization of a buffer, you can create a slice. Use the subarray() method to create it. The first parameter is the starting position, and you can specify an optional second parameter with the end position.
const buf = Buffer.from('Hey!')
buf.subarray(0).toString() //Hey!
const slice = buf.subarray(0, 2)
console.log(slice.toString()) //He
buf[1] = 111 //o
console.log(slice.toString()) //HoCopy a buffer
Using set() method we can copy a buffer.
const buf = Buffer.from('Hi !!')
let bufcopy = Buffer.alloc(5) //allocate 5 bytes
bufcopy.set(buf)
By default, you copy the whole buffer. If you only want to copy a part of the buffer, you can use .subarray() and the offset argument that specifies an offset to write to:
const buf = Buffer.from('Hey?')
let bufcopy = Buffer.from('Moo!')
bufcopy.set(buf.subarray(1, 3), 1)
bufcopy.toString() //'Mey!'A buffer is an area of memory. It represents a fixed-size chunk of memory (can’t be resized) allocated outside of the V8 JavaScript engine
‘btoa‘ is not available in node js but you can use Buffer.from() to achieve a similar result. example: Buffer.from('Hi').toString('base64'))
![Read more about the article Oops concepts interview questions [Part – 6]](https://res.cloudinary.com/dv059kn7m/images/w_300,h_169,c_scale/f_webp,q_auto/v1673782936/Oops-concepts-interview-questions_3471dc5f2/Oops-concepts-interview-questions_3471dc5f2.png?_i=AA 300w, https://res.cloudinary.com/dv059kn7m/images/w_1024,h_576,c_scale/f_webp,q_auto/v1673782936/Oops-concepts-interview-questions_3471dc5f2/Oops-concepts-interview-questions_3471dc5f2.png?_i=AA 1024w, https://res.cloudinary.com/dv059kn7m/images/w_768,h_432,c_scale/f_webp,q_auto/v1673782936/Oops-concepts-interview-questions_3471dc5f2/Oops-concepts-interview-questions_3471dc5f2.png?_i=AA 768w, https://res.cloudinary.com/dv059kn7m/images/f_webp,q_auto/v1673782936/Oops-concepts-interview-questions_3471dc5f2/Oops-concepts-interview-questions_3471dc5f2.png?_i=AA 1280w) 
							 
							 
							
