Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Vivek Kumar
Vivek Kumar

Posted on

     

Understanding Buffer data in Node js

I will keep this article short, the reason behind that is like, there can be so many questions you can explore yourself related to binary, buffer data, etc.

In this tutorial, what I am going to do is, I will help you understand buffer data, how it gets created.

In node js if you want to create one buffer, you can use one method called
Buffer.alloc(size)
However, there are other ways as well as, which you can explore and comment below.

So, when you create buffer, you can create something like this

const buff = Buffer.alloc(8)

Here8 is the size of buffer, means 8 bytes.
1 byte = 8 bits

  • 00000000 in binary
  • 00 in hexadecimal

If you print buff in terminal you will see below output
<Buffer 00 00 00 00 00 00 00 00>

If you notice we have 8 pairs of zeroes - that represent 8 bytes in hexadecimal.

If you are a UI developer, you might be aware of hex color code where we use FF or AF or 3E etc, these are actually hexadecimal

Lets take an example.

We want to store "hello" in buffer.
By looking at the word we can easily see, it has 5 characters.
If we can store each character in 1 byte, we will need 5 bytes of buffer.

Lets create a new buffer

const helloBuff = Buffer.alloc(5)//output<Buffer 00 00 00 00 00>
Enter fullscreen modeExit fullscreen mode

As I told you each pair of zeroes represents one byte of hexadecimal number.

So what we can do here is, we can transform each character of "hello" to hexadecimal number.

To do that first we will have to convert it into it's ASCII value

'h' is 104 - 68 in hexadecimal'e' is 101 - 65 in hexadecimal 'l' is 108 - 6C in hexadecimal'l' is 108 - 6C in hexadecimal'o' is 111 - 6F in hexadecimal
Enter fullscreen modeExit fullscreen mode

To convert a decimal (say 108) to hexadecimal (say 6C ) follow below steps

  • Divide 108 by 16.
  • Quotient: 6, Remainder: 12
  • Continue dividing the quotient (6) by 16
  • Quotient: 0 (Stop since the quotient is now zero). Remainder is 6
  • Write in reverse order i.e. 6C ( here we can represent 12 as C in hex)

So our buffer data should be like

<Buffer 68 65 6C 6C 6F>

Now that we know what will be the output, we can test it now.

helloBuff.write("hello");
Enter fullscreen modeExit fullscreen mode

If you try to log helloBuff, your output will be same.

You can also use toString() method to get proper values

for e.g.

helloBuff.toString('utf8'). //output - 'hello'helloBuff.toString('base64') //output - 'aGVsbG8='helloBuff.toString('hex') //output - '68656c6c6f'
Enter fullscreen modeExit fullscreen mode

If you want to learn to calculate any string to base64 string. Please check my other article.
https://dev.to/vvkkumar06/converting-a-string-to-base64-manually-4ln2

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Full Stack Javascript Developer
  • Location
    Noida, India
  • Work
    UI Lead @ Publicis Sapient
  • Joined

More fromVivek Kumar

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp