Server IP : 127.0.0.2 / Your IP : 3.142.124.139 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/nodejs/api/ |
Upload File : |
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Buffer Node.js v4.2.6 Manual & Documentation</title> <link rel="stylesheet" href="assets/style.css"> <link rel="stylesheet" href="assets/sh.css"> <link rel="canonical" href="buffer.html"> </head> <body class="alt apidoc" id="api-section-buffer"> <div id="content" class="clearfix"> <div id="column2" class="interior"> <div id="intro" class="interior"> <a href="/" title="Go back to the home page"> Node.js (1) </a> </div> <ul> <li><a class="nav-documentation" href="documentation.html">About these Docs</a></li> <li><a class="nav-synopsis" href="synopsis.html">Synopsis</a></li> <li><a class="nav-assert" href="assert.html">Assertion Testing</a></li> <li><a class="nav-buffer active" href="buffer.html">Buffer</a></li> <li><a class="nav-addons" href="addons.html">C/C++ Addons</a></li> <li><a class="nav-child_process" href="child_process.html">Child Processes</a></li> <li><a class="nav-cluster" href="cluster.html">Cluster</a></li> <li><a class="nav-console" href="console.html">Console</a></li> <li><a class="nav-crypto" href="crypto.html">Crypto</a></li> <li><a class="nav-debugger" href="debugger.html">Debugger</a></li> <li><a class="nav-dns" href="dns.html">DNS</a></li> <li><a class="nav-domain" href="domain.html">Domain</a></li> <li><a class="nav-errors" href="errors.html">Errors</a></li> <li><a class="nav-events" href="events.html">Events</a></li> <li><a class="nav-fs" href="fs.html">File System</a></li> <li><a class="nav-globals" href="globals.html">Globals</a></li> <li><a class="nav-http" href="http.html">HTTP</a></li> <li><a class="nav-https" href="https.html">HTTPS</a></li> <li><a class="nav-modules" href="modules.html">Modules</a></li> <li><a class="nav-net" href="net.html">Net</a></li> <li><a class="nav-os" href="os.html">OS</a></li> <li><a class="nav-path" href="path.html">Path</a></li> <li><a class="nav-process" href="process.html">Process</a></li> <li><a class="nav-punycode" href="punycode.html">Punycode</a></li> <li><a class="nav-querystring" href="querystring.html">Query Strings</a></li> <li><a class="nav-readline" href="readline.html">Readline</a></li> <li><a class="nav-repl" href="repl.html">REPL</a></li> <li><a class="nav-stream" href="stream.html">Stream</a></li> <li><a class="nav-string_decoder" href="string_decoder.html">String Decoder</a></li> <li><a class="nav-timers" href="timers.html">Timers</a></li> <li><a class="nav-tls" href="tls.html">TLS/SSL</a></li> <li><a class="nav-tty" href="tty.html">TTY</a></li> <li><a class="nav-dgram" href="dgram.html">UDP/Datagram</a></li> <li><a class="nav-url" href="url.html">URL</a></li> <li><a class="nav-util" href="util.html">Utilities</a></li> <li><a class="nav-v8" href="v8.html">V8</a></li> <li><a class="nav-vm" href="vm.html">VM</a></li> <li><a class="nav-zlib" href="zlib.html">ZLIB</a></li> </ul> </div> <div id="column1" data-id="buffer" class="interior"> <header> <h1>Node.js v4.2.6 Documentation</h1> <div id="gtoc"> <p> <a href="index.html" name="toc">Index</a> | <a href="all.html">View on single page</a> | <a href="buffer.json">View as JSON</a> </p> </div> <hr> </header> <div id="toc"> <h2>Table of Contents</h2> <ul> <li><a href="#buffer_buffer">Buffer</a><ul> <li><a href="#buffer_class_buffer">Class: Buffer</a><ul> <li><a href="#buffer_new_buffer_array">new Buffer(array)</a></li> <li><a href="#buffer_new_buffer_buffer">new Buffer(buffer)</a></li> <li><a href="#buffer_new_buffer_size">new Buffer(size)</a></li> <li><a href="#buffer_new_buffer_str_encoding">new Buffer(str[, encoding])</a></li> <li><a href="#buffer_class_method_buffer_bytelength_string_encoding">Class Method: Buffer.byteLength(string[, encoding])</a></li> <li><a href="#buffer_class_method_buffer_compare_buf1_buf2">Class Method: Buffer.compare(buf1, buf2)</a></li> <li><a href="#buffer_class_method_buffer_concat_list_totallength">Class Method: Buffer.concat(list[, totalLength])</a></li> <li><a href="#buffer_class_method_buffer_isbuffer_obj">Class Method: Buffer.isBuffer(obj)</a></li> <li><a href="#buffer_class_method_buffer_isencoding_encoding">Class Method: Buffer.isEncoding(encoding)</a></li> <li><a href="#buffer_buffer_entries">buffer.entries()</a></li> <li><a href="#buffer_buffer_keys">buffer.keys()</a></li> <li><a href="#buffer_buffer_values">buffer.values()</a></li> <li><a href="#buffer_buf_index">buf[index]</a></li> <li><a href="#buffer_buf_compare_otherbuffer">buf.compare(otherBuffer)</a></li> <li><a href="#buffer_buf_copy_targetbuffer_targetstart_sourcestart_sourceend">buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])</a></li> <li><a href="#buffer_buf_equals_otherbuffer">buf.equals(otherBuffer)</a></li> <li><a href="#buffer_buf_fill_value_offset_end">buf.fill(value[, offset][, end])</a></li> <li><a href="#buffer_buf_indexof_value_byteoffset">buf.indexOf(value[, byteOffset])</a></li> <li><a href="#buffer_buf_length">buf.length</a></li> <li><a href="#buffer_buf_readdoublebe_offset_noassert">buf.readDoubleBE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readdoublele_offset_noassert">buf.readDoubleLE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readfloatbe_offset_noassert">buf.readFloatBE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readfloatle_offset_noassert">buf.readFloatLE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readint8_offset_noassert">buf.readInt8(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readint16be_offset_noassert">buf.readInt16BE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readint16le_offset_noassert">buf.readInt16LE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readint32be_offset_noassert">buf.readInt32BE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readint32le_offset_noassert">buf.readInt32LE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readintbe_offset_bytelength_noassert">buf.readIntBE(offset, byteLength[, noAssert])</a></li> <li><a href="#buffer_buf_readintle_offset_bytelength_noassert">buf.readIntLE(offset, byteLength[, noAssert])</a></li> <li><a href="#buffer_buf_readuint8_offset_noassert">buf.readUInt8(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readuint16be_offset_noassert">buf.readUInt16BE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readuint16le_offset_noassert">buf.readUInt16LE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readuint32be_offset_noassert">buf.readUInt32BE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readuint32le_offset_noassert">buf.readUInt32LE(offset[, noAssert])</a></li> <li><a href="#buffer_buf_readuintbe_offset_bytelength_noassert">buf.readUIntBE(offset, byteLength[, noAssert])</a></li> <li><a href="#buffer_buf_readuintle_offset_bytelength_noassert">buf.readUIntLE(offset, byteLength[, noAssert])</a></li> <li><a href="#buffer_buf_slice_start_end">buf.slice([start[, end]])</a></li> <li><a href="#buffer_buf_tostring_encoding_start_end">buf.toString([encoding][, start][, end])</a></li> <li><a href="#buffer_buf_tojson">buf.toJSON()</a></li> <li><a href="#buffer_buf_write_string_offset_length_encoding">buf.write(string[, offset][, length][, encoding])</a></li> <li><a href="#buffer_buf_writedoublebe_value_offset_noassert">buf.writeDoubleBE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writedoublele_value_offset_noassert">buf.writeDoubleLE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writefloatbe_value_offset_noassert">buf.writeFloatBE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writefloatle_value_offset_noassert">buf.writeFloatLE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeint8_value_offset_noassert">buf.writeInt8(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeint16be_value_offset_noassert">buf.writeInt16BE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeint16le_value_offset_noassert">buf.writeInt16LE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeint32be_value_offset_noassert">buf.writeInt32BE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeint32le_value_offset_noassert">buf.writeInt32LE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeintbe_value_offset_bytelength_noassert">buf.writeIntBE(value, offset, byteLength[, noAssert])</a></li> <li><a href="#buffer_buf_writeintle_value_offset_bytelength_noassert">buf.writeIntLE(value, offset, byteLength[, noAssert])</a></li> <li><a href="#buffer_buf_writeuint8_value_offset_noassert">buf.writeUInt8(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeuint16be_value_offset_noassert">buf.writeUInt16BE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeuint16le_value_offset_noassert">buf.writeUInt16LE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeuint32be_value_offset_noassert">buf.writeUInt32BE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeuint32le_value_offset_noassert">buf.writeUInt32LE(value, offset[, noAssert])</a></li> <li><a href="#buffer_buf_writeuintbe_value_offset_bytelength_noassert">buf.writeUIntBE(value, offset, byteLength[, noAssert])</a></li> <li><a href="#buffer_buf_writeuintle_value_offset_bytelength_noassert">buf.writeUIntLE(value, offset, byteLength[, noAssert])</a></li> </ul> </li> <li><a href="#buffer_buffer_inspect_max_bytes">buffer.INSPECT_MAX_BYTES</a></li> <li><a href="#buffer_es6_iteration">ES6 iteration</a></li> <li><a href="#buffer_class_slowbuffer">Class: SlowBuffer</a></li> </ul> </li> </ul> </div> <div id="apicontent"> <h1>Buffer<span><a class="mark" href="#buffer_buffer" id="buffer_buffer">#</a></span></h1> <pre class="api_stability_2">Stability: 2 - Stable</pre><p>Pure JavaScript is Unicode-friendly but not nice to binary data. When dealing with TCP streams or the file system, it's necessary to handle octet streams. Node.js has several strategies for manipulating, creating, and consuming octet streams. </p> <p>Raw data is stored in instances of the <code>Buffer</code> class. A <code>Buffer</code> is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A <code>Buffer</code> cannot be resized. </p> <p>The <code>Buffer</code> class is a global, making it very rare that one would need to ever <code>require('buffer')</code>. </p> <p>Converting between Buffers and JavaScript string objects requires an explicit encoding method. The different string encodings are: </p> <ul> <li><p><code>'ascii'</code> - for 7-bit ASCII data only. This encoding method is very fast and will strip the high bit if set.</p> </li> <li><p><code>'utf8'</code> - Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.</p> </li> <li><p><code>'utf16le'</code> - 2 or 4 bytes, little-endian encoded Unicode characters. Surrogate pairs (U+10000 to U+10FFFF) are supported.</p> </li> <li><p><code>'ucs2'</code> - Alias of <code>'utf16le'</code>.</p> </li> <li><p><code>'base64'</code> - Base64 string encoding.</p> </li> <li><p><code>'binary'</code> - A way of encoding the buffer into a one-byte (<code>latin-1</code>) encoded string. The string <code>'latin-1'</code> is not supported. Instead, pass <code>'binary'</code> to use <code>'latin-1'</code> encoding.</p> </li> <li><p><code>'hex'</code> - Encode each byte as two hexadecimal characters.</p> </li> </ul> <p>Creating a typed array from a <code>Buffer</code> works with the following caveats: </p> <ol> <li><p>The buffer's memory is copied, not shared.</p> </li> <li><p>The buffer's memory is interpreted as an array, not a byte array. That is, <code>new Uint32Array(new Buffer([1,2,3,4]))</code> creates a 4-element <code>Uint32Array</code> with elements <code>[1,2,3,4]</code>, not a <code>Uint32Array</code> with a single element <code>[0x1020304]</code> or <code>[0x4030201]</code>.</p> </li> </ol> <p>NOTE: Node.js v0.8 retained a reference to the buffer in <code>array.buffer</code> instead of cloning it. </p> <p>While more efficient, it introduces subtle incompatibilities with the typed arrays specification. <code>ArrayBuffer#slice()</code> makes a copy of the slice while <a href="#buffer_buf_slice_start_end"><code>Buffer#slice()</code></a> creates a view. </p> <h2>Class: Buffer<span><a class="mark" href="#buffer_class_buffer" id="buffer_class_buffer">#</a></span></h2> <p>The Buffer class is a global type for dealing with binary data directly. It can be constructed in a variety of ways. </p> <h3>new Buffer(array)<span><a class="mark" href="#buffer_new_buffer_array" id="buffer_new_buffer_array">#</a></span></h3> <div class="signature"><ul> <li><code>array</code> Array</li> </div></ul> <p>Allocates a new buffer using an <code>array</code> of octets. </p> <h3>new Buffer(buffer)<span><a class="mark" href="#buffer_new_buffer_buffer" id="buffer_new_buffer_buffer">#</a></span></h3> <div class="signature"><ul> <li><code>buffer</code> <span class="type">Buffer</span></li> </div></ul> <p>Copies the passed <code>buffer</code> data onto a new <code>Buffer</code> instance. </p> <h3>new Buffer(size)<span><a class="mark" href="#buffer_new_buffer_size" id="buffer_new_buffer_size">#</a></span></h3> <div class="signature"><ul> <li><code>size</code> Number</li> </div></ul> <p>Allocates a new buffer of <code>size</code> bytes. <code>size</code> must be less than 1,073,741,824 bytes (1 GB) on 32-bit architectures or 2,147,483,648 bytes (2 GB) on 64-bit architectures. Otherwise, a <a href="errors.html#errors_class_rangeerror"><code>RangeError</code></a> is thrown. </p> <p>Unlike <code>ArrayBuffers</code>, the underlying memory for buffers is not initialized. So the contents of a newly created <code>Buffer</code> are unknown and could contain sensitive data. Use <a href="#buffer_buf_fill_value_offset_end"><code>buf.fill(0)</code></a> to initialize a buffer to zeroes. </p> <h3>new Buffer(str[, encoding])<span><a class="mark" href="#buffer_new_buffer_str_encoding" id="buffer_new_buffer_str_encoding">#</a></span></h3> <div class="signature"><ul> <li><code>str</code> String - string to encode.</li> <li><code>encoding</code> String - encoding to use, Optional.</li> </div></ul> <p>Allocates a new buffer containing the given <code>str</code>. <code>encoding</code> defaults to <code>'utf8'</code>. </p> <h3>Class Method: Buffer.byteLength(string[, encoding])<span><a class="mark" href="#buffer_class_method_buffer_bytelength_string_encoding" id="buffer_class_method_buffer_bytelength_string_encoding">#</a></span></h3> <div class="signature"><ul> <li><code>string</code> String</li> <li><code>encoding</code> String, Optional, Default: 'utf8'</li> <li>Return: Number</li> </div></ul> <p>Gives the actual byte length of a string. <code>encoding</code> defaults to <code>'utf8'</code>. This is not the same as <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length"><code>String.prototype.length</code></a> since that returns the number of <em>characters</em> in a string. </p> <p>Example: </p> <pre><code>str = '\u00bd + \u00bc = \u00be'; console.log(`${str}: ${str.length} characters, ` + `${Buffer.byteLength(str, 'utf8')} bytes`); // ½ + ¼ = ¾: 9 characters, 12 bytes</code></pre> <h3>Class Method: Buffer.compare(buf1, buf2)<span><a class="mark" href="#buffer_class_method_buffer_compare_buf1_buf2" id="buffer_class_method_buffer_compare_buf1_buf2">#</a></span></h3> <div class="signature"><ul> <li><code>buf1</code> <span class="type">Buffer</span></li> <li><code>buf2</code> <span class="type">Buffer</span></li> </div></ul> <p>The same as <a href="#buffer_buf_compare_otherbuffer"><code>buf1.compare(buf2)</code></a>. Useful for sorting an Array of Buffers: </p> <pre><code>var arr = [Buffer('1234'), Buffer('0123')]; arr.sort(Buffer.compare);</code></pre> <h3>Class Method: Buffer.concat(list[, totalLength])<span><a class="mark" href="#buffer_class_method_buffer_concat_list_totallength" id="buffer_class_method_buffer_concat_list_totallength">#</a></span></h3> <div class="signature"><ul> <li><code>list</code> <span class="type">Array</span> List of Buffer objects to concat</li> <li><code>totalLength</code> <span class="type">Number</span> Total length of the buffers in the list when concatenated</li> </div></ul> <p>Returns a buffer which is the result of concatenating all the buffers in the list together. </p> <p>If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. </p> <p>If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. </p> <p>Example: build a single buffer from a list of three buffers: </p> <pre><code>var buf1 = new Buffer(10); var buf2 = new Buffer(14); var buf3 = new Buffer(18); buf1.fill(0); buf2.fill(0); buf3.fill(0); var buffers = [buf1, buf2, buf3]; var totalLength = 0; for (var i = 0; i < buffers.length; i++) { totalLength += buffers[i].length; } console.log(totalLength); var bufA = Buffer.concat(buffers, totalLength); console.log(bufA); console.log(bufA.length); // 42 // <Buffer 00 00 00 00 ...> // 42</code></pre> <h3>Class Method: Buffer.isBuffer(obj)<span><a class="mark" href="#buffer_class_method_buffer_isbuffer_obj" id="buffer_class_method_buffer_isbuffer_obj">#</a></span></h3> <div class="signature"><ul> <li><code>obj</code> Object</li> <li>Return: Boolean</li> </div></ul> <p>Tests if <code>obj</code> is a <code>Buffer</code>. </p> <h3>Class Method: Buffer.isEncoding(encoding)<span><a class="mark" href="#buffer_class_method_buffer_isencoding_encoding" id="buffer_class_method_buffer_isencoding_encoding">#</a></span></h3> <div class="signature"><ul> <li><code>encoding</code> <span class="type">String</span> The encoding string to test</li> </div></ul> <p>Returns true if the <code>encoding</code> is a valid encoding argument, or false otherwise. </p> <h3>buffer.entries()<span><a class="mark" href="#buffer_buffer_entries" id="buffer_buffer_entries">#</a></span></h3> <p>Creates iterator for <code>[index, byte]</code> arrays. </p> <h3>buffer.keys()<span><a class="mark" href="#buffer_buffer_keys" id="buffer_buffer_keys">#</a></span></h3> <p>Creates iterator for buffer keys (indices). </p> <h3>buffer.values()<span><a class="mark" href="#buffer_buffer_values" id="buffer_buffer_values">#</a></span></h3> <p>Creates iterator for buffer values (bytes). This function is called automatically when <code>buffer</code> is used in a <code>for..of</code> statement. </p> <h3>buf[index]<span><a class="mark" href="#buffer_buf_index" id="buffer_buf_index">#</a></span></h3> <!--type=property--> <!--name=[index]--> <p>Get and set the octet at <code>index</code>. The values refer to individual bytes, so the legal range is between <code>0x00</code> and <code>0xFF</code> hex or <code>0</code> and <code>255</code>. </p> <p>Example: copy an ASCII string into a buffer, one byte at a time: </p> <pre><code>str = "Node.js"; buf = new Buffer(str.length); for (var i = 0; i < str.length ; i++) { buf[i] = str.charCodeAt(i); } console.log(buf); // Node.js</code></pre> <h3>buf.compare(otherBuffer)<span><a class="mark" href="#buffer_buf_compare_otherbuffer" id="buffer_buf_compare_otherbuffer">#</a></span></h3> <div class="signature"><ul> <li><code>otherBuffer</code> <span class="type">Buffer</span></li> </div></ul> <p>Returns a number indicating whether <code>this</code> comes before, after, or is the same as the <code>otherBuffer</code> in sort order. </p> <h3>buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])<span><a class="mark" href="#buffer_buf_copy_targetbuffer_targetstart_sourcestart_sourceend" id="buffer_buf_copy_targetbuffer_targetstart_sourcestart_sourceend">#</a></span></h3> <div class="signature"><ul> <li><code>targetBuffer</code> Buffer object - Buffer to copy into</li> <li><code>targetStart</code> Number, Optional, Default: 0</li> <li><code>sourceStart</code> Number, Optional, Default: 0</li> <li><code>sourceEnd</code> Number, Optional, Default: <code>buffer.length</code></li> </div></ul> <p>Copies data from a region of this buffer to a region in the target buffer even if the target memory region overlaps with the source. If <code>undefined</code>, the <code>targetStart</code> and <code>sourceStart</code> parameters default to <code>0</code> while <code>sourceEnd</code> defaults to <code>buffer.length</code>. </p> <p>Returns the number of bytes copied. </p> <p>Example: build two Buffers, then copy <code>buf1</code> from byte 16 through byte 19 into <code>buf2</code>, starting at the 8th byte in <code>buf2</code>. </p> <pre><code>buf1 = new Buffer(26); buf2 = new Buffer(26); for (var i = 0 ; i < 26 ; i++) { buf1[i] = i + 97; // 97 is ASCII a buf2[i] = 33; // ASCII ! } buf1.copy(buf2, 8, 16, 20); console.log(buf2.toString('ascii', 0, 25)); // !!!!!!!!qrst!!!!!!!!!!!!!</code></pre> <p>Example: Build a single buffer, then copy data from one region to an overlapping region in the same buffer </p> <pre><code>buf = new Buffer(26); for (var i = 0 ; i < 26 ; i++) { buf[i] = i + 97; // 97 is ASCII a } buf.copy(buf, 0, 4, 10); console.log(buf.toString()); // efghijghijklmnopqrstuvwxyz</code></pre> <h3>buf.equals(otherBuffer)<span><a class="mark" href="#buffer_buf_equals_otherbuffer" id="buffer_buf_equals_otherbuffer">#</a></span></h3> <div class="signature"><ul> <li><code>otherBuffer</code> <span class="type">Buffer</span></li> </div></ul> <p>Returns a boolean indicating whether <code>this</code> and <code>otherBuffer</code> have the same bytes. </p> <h3>buf.fill(value[, offset][, end])<span><a class="mark" href="#buffer_buf_fill_value_offset_end" id="buffer_buf_fill_value_offset_end">#</a></span></h3> <div class="signature"><ul> <li><code>value</code></li> <li><code>offset</code> Number, Optional</li> <li><code>end</code> Number, Optional</li> </div></ul> <p>Fills the buffer with the specified value. If the <code>offset</code> (defaults to <code>0</code>) and <code>end</code> (defaults to <code>buffer.length</code>) are not given it will fill the entire buffer. </p> <pre><code>var b = new Buffer(50); b.fill('h');</code></pre> <h3>buf.indexOf(value[, byteOffset])<span><a class="mark" href="#buffer_buf_indexof_value_byteoffset" id="buffer_buf_indexof_value_byteoffset">#</a></span></h3> <div class="signature"><ul> <li><code>value</code> String, Buffer or Number</li> <li><code>byteOffset</code> Number, Optional, Default: 0</li> <li>Return: Number</li> </div></ul> <p>Operates similar to <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf"><code>Array#indexOf()</code></a>. Accepts a String, Buffer or Number. Strings are interpreted as UTF8. Buffers will use the entire buffer. So in order to compare a partial Buffer use <a href="#buffer_buf_slice_start_end"><code>Buffer#slice()</code></a>. Numbers can range from 0 to 255. </p> <h3>buf.length<span><a class="mark" href="#buffer_buf_length" id="buffer_buf_length">#</a></span></h3> <div class="signature"><ul> <li>Number</li> </div></ul> <p>The size of the buffer in bytes. Note that this is not necessarily the size of the contents. <code>length</code> refers to the amount of memory allocated for the buffer object. It does not change when the contents of the buffer are changed. </p> <pre><code>buf = new Buffer(1234); console.log(buf.length); buf.write('some string', 0, 'ascii'); console.log(buf.length); // 1234 // 1234</code></pre> <p>While the <code>length</code> property is not immutable, changing the value of <code>length</code> can result in undefined and inconsistent behavior. Applications that wish to modify the length of a buffer should therefore treat <code>length</code> as read-only and use <a href="#buffer_buf_slice_start_end"><code>buf.slice</code></a> to create a new buffer. </p> <pre><code>buf = new Buffer(10); buf.write('abcdefghj', 0, 'ascii'); console.log(buf.length); // 10 buf = buf.slice(0,5); console.log(buf.length); // 5</code></pre> <h3>buf.readDoubleBE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readdoublebe_offset_noassert" id="buffer_buf_readdoublebe_offset_noassert">#</a></span></h3> <h3>buf.readDoubleLE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readdoublele_offset_noassert" id="buffer_buf_readdoublele_offset_noassert">#</a></span></h3> <ul> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> <li>Return: Number</li> </ul> <p>Reads a 64-bit double from the buffer at the specified offset with specified endian format. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>offset</code>. This means that <code>offset</code> may be beyond the end of the buffer. Defaults to <code>false</code>. </p> <p>Example: </p> <pre><code>var buf = new Buffer(8); buf[0] = 0x55; buf[1] = 0x55; buf[2] = 0x55; buf[3] = 0x55; buf[4] = 0x55; buf[5] = 0x55; buf[6] = 0xd5; buf[7] = 0x3f; console.log(buf.readDoubleLE(0)); // 0.3333333333333333</code></pre> <h3>buf.readFloatBE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readfloatbe_offset_noassert" id="buffer_buf_readfloatbe_offset_noassert">#</a></span></h3> <h3>buf.readFloatLE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readfloatle_offset_noassert" id="buffer_buf_readfloatle_offset_noassert">#</a></span></h3> <ul> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> <li>Return: Number</li> </ul> <p>Reads a 32-bit float from the buffer at the specified offset with specified endian format. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>offset</code>. This means that <code>offset</code> may be beyond the end of the buffer. Defaults to <code>false</code>. </p> <p>Example: </p> <pre><code>var buf = new Buffer(4); buf[0] = 0x00; buf[1] = 0x00; buf[2] = 0x80; buf[3] = 0x3f; console.log(buf.readFloatLE(0)); // 0x01</code></pre> <h3>buf.readInt8(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readint8_offset_noassert" id="buffer_buf_readint8_offset_noassert">#</a></span></h3> <div class="signature"><ul> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> <li>Return: Number</li> </div></ul> <p>Reads a signed 8-bit integer from the buffer at the specified offset. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>offset</code>. This means that <code>offset</code> may be beyond the end of the buffer. Defaults to <code>false</code>. </p> <p>Works as <code>buffer.readUInt8</code>, except buffer contents are treated as two's complement signed values. </p> <h3>buf.readInt16BE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readint16be_offset_noassert" id="buffer_buf_readint16be_offset_noassert">#</a></span></h3> <h3>buf.readInt16LE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readint16le_offset_noassert" id="buffer_buf_readint16le_offset_noassert">#</a></span></h3> <ul> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> <li>Return: Number</li> </ul> <p>Reads a signed 16-bit integer from the buffer at the specified offset with specified endian format. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>offset</code>. This means that <code>offset</code> may be beyond the end of the buffer. Defaults to <code>false</code>. </p> <p>Works as <code>buffer.readUInt16*</code>, except buffer contents are treated as two's complement signed values. </p> <h3>buf.readInt32BE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readint32be_offset_noassert" id="buffer_buf_readint32be_offset_noassert">#</a></span></h3> <h3>buf.readInt32LE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readint32le_offset_noassert" id="buffer_buf_readint32le_offset_noassert">#</a></span></h3> <ul> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> <li>Return: Number</li> </ul> <p>Reads a signed 32-bit integer from the buffer at the specified offset with specified endian format. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>offset</code>. This means that <code>offset</code> may be beyond the end of the buffer. Defaults to <code>false</code>. </p> <p>Works as <code>buffer.readUInt32*</code>, except buffer contents are treated as two's complement signed values. </p> <h3>buf.readIntBE(offset, byteLength[, noAssert])<span><a class="mark" href="#buffer_buf_readintbe_offset_bytelength_noassert" id="buffer_buf_readintbe_offset_bytelength_noassert">#</a></span></h3> <h3>buf.readIntLE(offset, byteLength[, noAssert])<span><a class="mark" href="#buffer_buf_readintle_offset_bytelength_noassert" id="buffer_buf_readintle_offset_bytelength_noassert">#</a></span></h3> <ul> <li><code>offset</code> {Number} <code>0 <= offset <= buf.length</code></li> <li><code>byteLength</code> {Number} <code>0 < byteLength <= 6</code></li> <li><code>noAssert</code> {Boolean} Default: false</li> <li>Return: {Number}</li> </ul> <p>A generalized version of all numeric read methods. Supports up to 48 bits of accuracy. For example: </p> <pre><code>var b = new Buffer(6); b.writeUInt16LE(0x90ab, 0); b.writeUInt32LE(0x12345678, 2); b.readUIntLE(0, 6).toString(16); // Specify 6 bytes (48 bits) // output: '1234567890ab'</code></pre> <p>Set <code>noAssert</code> to true to skip validation of <code>offset</code>. This means that <code>offset</code> may be beyond the end of the buffer. Defaults to <code>false</code>. </p> <h3>buf.readUInt8(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readuint8_offset_noassert" id="buffer_buf_readuint8_offset_noassert">#</a></span></h3> <div class="signature"><ul> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> <li>Return: Number</li> </div></ul> <p>Reads an unsigned 8-bit integer from the buffer at the specified offset. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>offset</code>. This means that <code>offset</code> may be beyond the end of the buffer. Defaults to <code>false</code>. </p> <p>Example: </p> <pre><code>var buf = new Buffer(4); buf[0] = 0x3; buf[1] = 0x4; buf[2] = 0x23; buf[3] = 0x42; for (ii = 0; ii < buf.length; ii++) { console.log(buf.readUInt8(ii)); } // 0x3 // 0x4 // 0x23 // 0x42</code></pre> <h3>buf.readUInt16BE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readuint16be_offset_noassert" id="buffer_buf_readuint16be_offset_noassert">#</a></span></h3> <h3>buf.readUInt16LE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readuint16le_offset_noassert" id="buffer_buf_readuint16le_offset_noassert">#</a></span></h3> <ul> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> <li>Return: Number</li> </ul> <p>Reads an unsigned 16-bit integer from the buffer at the specified offset with specified endian format. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>offset</code>. This means that <code>offset</code> may be beyond the end of the buffer. Defaults to <code>false</code>. </p> <p>Example: </p> <pre><code>var buf = new Buffer(4); buf[0] = 0x3; buf[1] = 0x4; buf[2] = 0x23; buf[3] = 0x42; console.log(buf.readUInt16BE(0)); console.log(buf.readUInt16LE(0)); console.log(buf.readUInt16BE(1)); console.log(buf.readUInt16LE(1)); console.log(buf.readUInt16BE(2)); console.log(buf.readUInt16LE(2)); // 0x0304 // 0x0403 // 0x0423 // 0x2304 // 0x2342 // 0x4223</code></pre> <h3>buf.readUInt32BE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readuint32be_offset_noassert" id="buffer_buf_readuint32be_offset_noassert">#</a></span></h3> <h3>buf.readUInt32LE(offset[, noAssert])<span><a class="mark" href="#buffer_buf_readuint32le_offset_noassert" id="buffer_buf_readuint32le_offset_noassert">#</a></span></h3> <ul> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> <li>Return: Number</li> </ul> <p>Reads an unsigned 32-bit integer from the buffer at the specified offset with specified endian format. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>offset</code>. This means that <code>offset</code> may be beyond the end of the buffer. Defaults to <code>false</code>. </p> <p>Example: </p> <pre><code>var buf = new Buffer(4); buf[0] = 0x3; buf[1] = 0x4; buf[2] = 0x23; buf[3] = 0x42; console.log(buf.readUInt32BE(0)); console.log(buf.readUInt32LE(0)); // 0x03042342 // 0x42230403</code></pre> <h3>buf.readUIntBE(offset, byteLength[, noAssert])<span><a class="mark" href="#buffer_buf_readuintbe_offset_bytelength_noassert" id="buffer_buf_readuintbe_offset_bytelength_noassert">#</a></span></h3> <h3>buf.readUIntLE(offset, byteLength[, noAssert])<span><a class="mark" href="#buffer_buf_readuintle_offset_bytelength_noassert" id="buffer_buf_readuintle_offset_bytelength_noassert">#</a></span></h3> <ul> <li><code>offset</code> {Number} <code>0 <= offset <= buf.length</code></li> <li><code>byteLength</code> {Number} <code>0 < byteLength <= 6</code></li> <li><code>noAssert</code> {Boolean} Default: false</li> <li>Return: {Number}</li> </ul> <p>A generalized version of all numeric read methods. Supports up to 48 bits of accuracy. For example: </p> <pre><code>var b = new Buffer(6); b.writeUInt16LE(0x90ab, 0); b.writeUInt32LE(0x12345678, 2); b.readUIntLE(0, 6).toString(16); // Specify 6 bytes (48 bits) // output: '1234567890ab'</code></pre> <h3>buf.slice([start[, end]])<span><a class="mark" href="#buffer_buf_slice_start_end" id="buffer_buf_slice_start_end">#</a></span></h3> <div class="signature"><ul> <li><code>start</code> Number, Optional, Default: 0</li> <li><code>end</code> Number, Optional, Default: <code>buffer.length</code></li> </div></ul> <p>Returns a new buffer which references the same memory as the old, but offset and cropped by the <code>start</code> (defaults to <code>0</code>) and <code>end</code> (defaults to <code>buffer.length</code>) indexes. Negative indexes start from the end of the buffer. </p> <p><strong>Modifying the new buffer slice will modify memory in the original buffer!</strong> </p> <p>Example: build a Buffer with the ASCII alphabet, take a slice, then modify one byte from the original Buffer. </p> <pre><code>var buf1 = new Buffer(26); for (var i = 0 ; i < 26 ; i++) { buf1[i] = i + 97; // 97 is ASCII a } var buf2 = buf1.slice(0, 3); console.log(buf2.toString('ascii', 0, buf2.length)); buf1[0] = 33; console.log(buf2.toString('ascii', 0, buf2.length)); // abc // !bc</code></pre> <h3>buf.toString([encoding][, start][, end])<span><a class="mark" href="#buffer_buf_tostring_encoding_start_end" id="buffer_buf_tostring_encoding_start_end">#</a></span></h3> <div class="signature"><ul> <li><code>encoding</code> String, Optional, Default: 'utf8'</li> <li><code>start</code> Number, Optional, Default: 0</li> <li><code>end</code> Number, Optional, Default: <code>buffer.length</code></li> </div></ul> <p>Decodes and returns a string from buffer data encoded using the specified character set encoding. If <code>encoding</code> is <code>undefined</code> or <code>null</code>, then <code>encoding</code> defaults to <code>'utf8'</code>. The <code>start</code> and <code>end</code> parameters default to <code>0</code> and <code>buffer.length</code> when <code>undefined</code>. </p> <pre><code>buf = new Buffer(26); for (var i = 0 ; i < 26 ; i++) { buf[i] = i + 97; // 97 is ASCII a } buf.toString('ascii'); // outputs: abcdefghijklmnopqrstuvwxyz buf.toString('ascii',0,5); // outputs: abcde buf.toString('utf8',0,5); // outputs: abcde buf.toString(undefined,0,5); // encoding defaults to 'utf8', outputs abcde</code></pre> <p>See <code>buf.write()</code> example, below. </p> <h3>buf.toJSON()<span><a class="mark" href="#buffer_buf_tojson" id="buffer_buf_tojson">#</a></span></h3> <p>Returns a JSON representation of the Buffer instance. <code>JSON.stringify</code> implicitly calls this function when stringifying a Buffer instance. </p> <p>Example: </p> <pre><code>var buf = new Buffer('test'); var json = JSON.stringify(buf); console.log(json); // '{"type":"Buffer","data":[116,101,115,116]}' var copy = JSON.parse(json, function(key, value) { return value && value.type === 'Buffer' ? new Buffer(value.data) : value; }); console.log(copy); // <Buffer 74 65 73 74></code></pre> <h3>buf.write(string[, offset][, length][, encoding])<span><a class="mark" href="#buffer_buf_write_string_offset_length_encoding" id="buffer_buf_write_string_offset_length_encoding">#</a></span></h3> <div class="signature"><ul> <li><code>string</code> String - data to be written to buffer</li> <li><code>offset</code> Number, Optional, Default: 0</li> <li><code>length</code> Number, Optional, Default: <code>buffer.length - offset</code></li> <li><code>encoding</code> String, Optional, Default: 'utf8'</li> </div></ul> <p>Writes <code>string</code> to the buffer at <code>offset</code> using the given encoding. <code>offset</code> defaults to <code>0</code>, <code>encoding</code> defaults to <code>'utf8'</code>. <code>length</code> is the number of bytes to write. Returns number of octets written. If <code>buffer</code> did not contain enough space to fit the entire string, it will write a partial amount of the string. <code>length</code> defaults to <code>buffer.length - offset</code>. The method will not write partial characters. </p> <pre><code>buf = new Buffer(256); len = buf.write('\u00bd + \u00bc = \u00be', 0); console.log(`${len} bytes: ${buf.toString('utf8', 0, len)}`);</code></pre> <h3>buf.writeDoubleBE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writedoublebe_value_offset_noassert" id="buffer_buf_writedoublebe_value_offset_noassert">#</a></span></h3> <h3>buf.writeDoubleLE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writedoublele_value_offset_noassert" id="buffer_buf_writedoublele_value_offset_noassert">#</a></span></h3> <ul> <li><code>value</code> Number</li> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> </ul> <p>Writes <code>value</code> to the buffer at the specified offset with specified endian format. <code>value</code> must be a valid 64-bit double. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>value</code> and <code>offset</code>. This means that <code>value</code> may be too large for the specific function and <code>offset</code> may be beyond the end of the buffer leading to the values being silently dropped. This should not be used unless you are certain of correctness. Defaults to <code>false</code>. </p> <p>Example: </p> <pre><code>var buf = new Buffer(8); buf.writeDoubleBE(0xdeadbeefcafebabe, 0); console.log(buf); buf.writeDoubleLE(0xdeadbeefcafebabe, 0); console.log(buf); // <Buffer 43 eb d5 b7 dd f9 5f d7> // <Buffer d7 5f f9 dd b7 d5 eb 43></code></pre> <h3>buf.writeFloatBE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writefloatbe_value_offset_noassert" id="buffer_buf_writefloatbe_value_offset_noassert">#</a></span></h3> <h3>buf.writeFloatLE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writefloatle_value_offset_noassert" id="buffer_buf_writefloatle_value_offset_noassert">#</a></span></h3> <ul> <li><code>value</code> Number</li> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> </ul> <p>Writes <code>value</code> to the buffer at the specified offset with specified endian format. Behavior is unspecified if <code>value</code> is not a 32-bit float. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>value</code> and <code>offset</code>. This means that <code>value</code> may be too large for the specific function and <code>offset</code> may be beyond the end of the buffer leading to the values being silently dropped. This should not be used unless you are certain of correctness. Defaults to <code>false</code>. </p> <p>Example: </p> <pre><code>var buf = new Buffer(4); buf.writeFloatBE(0xcafebabe, 0); console.log(buf); buf.writeFloatLE(0xcafebabe, 0); console.log(buf); // <Buffer 4f 4a fe bb> // <Buffer bb fe 4a 4f></code></pre> <h3>buf.writeInt8(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writeint8_value_offset_noassert" id="buffer_buf_writeint8_value_offset_noassert">#</a></span></h3> <div class="signature"><ul> <li><code>value</code> Number</li> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> </div></ul> <p>Writes <code>value</code> to the buffer at the specified offset. <code>value</code> must be a valid signed 8-bit integer. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>value</code> and <code>offset</code>. This means that <code>value</code> may be too large for the specific function and <code>offset</code> may be beyond the end of the buffer leading to the values being silently dropped. This should not be used unless you are certain of correctness. Defaults to <code>false</code>. </p> <p>Works as <code>buffer.writeUInt8</code>, except value is written out as a two's complement signed integer into <code>buffer</code>. </p> <h3>buf.writeInt16BE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writeint16be_value_offset_noassert" id="buffer_buf_writeint16be_value_offset_noassert">#</a></span></h3> <h3>buf.writeInt16LE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writeint16le_value_offset_noassert" id="buffer_buf_writeint16le_value_offset_noassert">#</a></span></h3> <ul> <li><code>value</code> Number</li> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> </ul> <p>Writes <code>value</code> to the buffer at the specified offset with specified endian format. <code>value</code> must be a valid signed 16-bit integer. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>value</code> and <code>offset</code>. This means that <code>value</code> may be too large for the specific function and <code>offset</code> may be beyond the end of the buffer leading to the values being silently dropped. This should not be used unless you are certain of correctness. Defaults to <code>false</code>. </p> <p>Works as <code>buffer.writeUInt16*</code>, except value is written out as a two's complement signed integer into <code>buffer</code>. </p> <h3>buf.writeInt32BE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writeint32be_value_offset_noassert" id="buffer_buf_writeint32be_value_offset_noassert">#</a></span></h3> <h3>buf.writeInt32LE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writeint32le_value_offset_noassert" id="buffer_buf_writeint32le_value_offset_noassert">#</a></span></h3> <ul> <li><code>value</code> Number</li> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> </ul> <p>Writes <code>value</code> to the buffer at the specified offset with specified endian format. <code>value</code> must be a valid signed 32-bit integer. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>value</code> and <code>offset</code>. This means that <code>value</code> may be too large for the specific function and <code>offset</code> may be beyond the end of the buffer leading to the values being silently dropped. This should not be used unless you are certain of correctness. Defaults to <code>false</code>. </p> <p>Works as <code>buffer.writeUInt32*</code>, except value is written out as a two's complement signed integer into <code>buffer</code>. </p> <h3>buf.writeIntBE(value, offset, byteLength[, noAssert])<span><a class="mark" href="#buffer_buf_writeintbe_value_offset_bytelength_noassert" id="buffer_buf_writeintbe_value_offset_bytelength_noassert">#</a></span></h3> <h3>buf.writeIntLE(value, offset, byteLength[, noAssert])<span><a class="mark" href="#buffer_buf_writeintle_value_offset_bytelength_noassert" id="buffer_buf_writeintle_value_offset_bytelength_noassert">#</a></span></h3> <ul> <li><code>value</code> {Number} Bytes to be written to buffer</li> <li><code>offset</code> {Number} <code>0 <= offset <= buf.length</code></li> <li><code>byteLength</code> {Number} <code>0 < byteLength <= 6</code></li> <li><code>noAssert</code> {Boolean} Default: false</li> <li>Return: {Number}</li> </ul> <p>Writes <code>value</code> to the buffer at the specified <code>offset</code> and <code>byteLength</code>. Supports up to 48 bits of accuracy. For example: </p> <pre><code>var b = new Buffer(6); b.writeUIntBE(0x1234567890ab, 0, 6); // <Buffer 12 34 56 78 90 ab></code></pre> <p>Set <code>noAssert</code> to <code>true</code> to skip validation of <code>value</code> and <code>offset</code>. Defaults to <code>false</code>. </p> <h3>buf.writeUInt8(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writeuint8_value_offset_noassert" id="buffer_buf_writeuint8_value_offset_noassert">#</a></span></h3> <div class="signature"><ul> <li><code>value</code> Number</li> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> </div></ul> <p>Writes <code>value</code> to the buffer at the specified offset. <code>value</code> must be a valid unsigned 8-bit integer. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>value</code> and <code>offset</code>. This means that <code>value</code> may be too large for the specific function and <code>offset</code> may be beyond the end of the buffer leading to the values being silently dropped. This should not be used unless you are certain of correctness. Defaults to <code>false</code>. </p> <p>Example: </p> <pre><code>var buf = new Buffer(4); buf.writeUInt8(0x3, 0); buf.writeUInt8(0x4, 1); buf.writeUInt8(0x23, 2); buf.writeUInt8(0x42, 3); console.log(buf); // <Buffer 03 04 23 42></code></pre> <h3>buf.writeUInt16BE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writeuint16be_value_offset_noassert" id="buffer_buf_writeuint16be_value_offset_noassert">#</a></span></h3> <h3>buf.writeUInt16LE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writeuint16le_value_offset_noassert" id="buffer_buf_writeuint16le_value_offset_noassert">#</a></span></h3> <ul> <li><code>value</code> Number</li> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> </ul> <p>Writes <code>value</code> to the buffer at the specified offset with specified endian format. <code>value</code> must be a valid unsigned 16-bit integer. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>value</code> and <code>offset</code>. This means that <code>value</code> may be too large for the specific function and <code>offset</code> may be beyond the end of the buffer leading to the values being silently dropped. This should not be used unless you are certain of correctness. Defaults to <code>false</code>. </p> <p>Example: </p> <pre><code>var buf = new Buffer(4); buf.writeUInt16BE(0xdead, 0); buf.writeUInt16BE(0xbeef, 2); console.log(buf); buf.writeUInt16LE(0xdead, 0); buf.writeUInt16LE(0xbeef, 2); console.log(buf); // <Buffer de ad be ef> // <Buffer ad de ef be></code></pre> <h3>buf.writeUInt32BE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writeuint32be_value_offset_noassert" id="buffer_buf_writeuint32be_value_offset_noassert">#</a></span></h3> <h3>buf.writeUInt32LE(value, offset[, noAssert])<span><a class="mark" href="#buffer_buf_writeuint32le_value_offset_noassert" id="buffer_buf_writeuint32le_value_offset_noassert">#</a></span></h3> <ul> <li><code>value</code> Number</li> <li><code>offset</code> Number</li> <li><code>noAssert</code> Boolean, Optional, Default: false</li> </ul> <p>Writes <code>value</code> to the buffer at the specified offset with specified endian format. <code>value</code> must be a valid unsigned 32-bit integer. </p> <p>Set <code>noAssert</code> to true to skip validation of <code>value</code> and <code>offset</code>. This means that <code>value</code> may be too large for the specific function and <code>offset</code> may be beyond the end of the buffer leading to the values being silently dropped. This should not be used unless you are certain of correctness. Defaults to <code>false</code>. </p> <p>Example: </p> <pre><code>var buf = new Buffer(4); buf.writeUInt32BE(0xfeedface, 0); console.log(buf); buf.writeUInt32LE(0xfeedface, 0); console.log(buf); // <Buffer fe ed fa ce> // <Buffer ce fa ed fe></code></pre> <h3>buf.writeUIntBE(value, offset, byteLength[, noAssert])<span><a class="mark" href="#buffer_buf_writeuintbe_value_offset_bytelength_noassert" id="buffer_buf_writeuintbe_value_offset_bytelength_noassert">#</a></span></h3> <h3>buf.writeUIntLE(value, offset, byteLength[, noAssert])<span><a class="mark" href="#buffer_buf_writeuintle_value_offset_bytelength_noassert" id="buffer_buf_writeuintle_value_offset_bytelength_noassert">#</a></span></h3> <ul> <li><code>value</code> {Number} Bytes to be written to buffer</li> <li><code>offset</code> {Number} <code>0 <= offset <= buf.length</code></li> <li><code>byteLength</code> {Number} <code>0 < byteLength <= 6</code></li> <li><code>noAssert</code> {Boolean} Default: false</li> <li>Return: {Number}</li> </ul> <p>Writes <code>value</code> to the buffer at the specified <code>offset</code> and <code>byteLength</code>. Supports up to 48 bits of accuracy. For example: </p> <pre><code>var b = new Buffer(6); b.writeUIntBE(0x1234567890ab, 0, 6); // <Buffer 12 34 56 78 90 ab></code></pre> <p>Set <code>noAssert</code> to <code>true</code> to skip validation of <code>value</code> and <code>offset</code>. Defaults to <code>false</code>. </p> <h2>buffer.INSPECT_MAX_BYTES<span><a class="mark" href="#buffer_buffer_inspect_max_bytes" id="buffer_buffer_inspect_max_bytes">#</a></span></h2> <div class="signature"><ul> <li>Number, Default: 50</li> </div></ul> <p>How many bytes will be returned when <code>buffer.inspect()</code> is called. This can be overridden by user modules. See <a href="util.html#util_util_inspect_object_options"><code>util.inspect()</code></a> for more details on <code>buffer.inspect()</code> behavior. </p> <p>Note that this is a property on the buffer module returned by <code>require('buffer')</code>, not on the Buffer global or a buffer instance. </p> <h2>ES6 iteration<span><a class="mark" href="#buffer_es6_iteration" id="buffer_es6_iteration">#</a></span></h2> <p>Buffers can be iterated over using <code>for..of</code> syntax: </p> <pre><code>var buf = new Buffer([1, 2, 3]); for (var b of buf) console.log(b) // 1 // 2 // 3</code></pre> <p>Additionally, the <code>buffer.values()</code>, <code>buffer.keys()</code>, and <code>buffer.entries()</code> methods can be used to create iterators. </p> <h2>Class: SlowBuffer<span><a class="mark" href="#buffer_class_slowbuffer" id="buffer_class_slowbuffer">#</a></span></h2> <p>Returns an un-pooled <code>Buffer</code>. </p> <p>In order to avoid the garbage collection overhead of creating many individually allocated Buffers, by default allocations under 4KB are sliced from a single larger allocated object. This approach improves both performance and memory usage since v8 does not need to track and cleanup as many <code>Persistent</code> objects. </p> <p>In the case where a developer may need to retain a small chunk of memory from a pool for an indeterminate amount of time, it may be appropriate to create an un-pooled Buffer instance using SlowBuffer and copy out the relevant bits. </p> <pre><code>// need to keep around a few small chunks of memory var store = []; socket.on('readable', function() { var data = socket.read(); // allocate for retained data var sb = new SlowBuffer(10); // copy the data into the new allocation data.copy(sb, 0, 0, 10); store.push(sb); });</code></pre> <p>This should be used only as a last resort <em>after</em> a developer has observed undue memory retention in their applications. </p> </div> </div> </div> <script src="assets/sh_main.js"></script> <script src="assets/sh_javascript.min.js"></script> <script>highlight(undefined, undefined, 'pre');</script> </body> </html>