title: NodeJS write binary buffer into a file
body: <p>I can't rewrite a file that I am getting from a binary buffer,  I have checked with the original file and all bytes are the same.</p>
  <p>This is the file create from NodeJS:</p>
  <pre><code># hd test.txt  | head
  00000000  47 49 46 38 39 61 32 00  32 00 f7 00 00 96 8c 73  |GIF89a2.2.�....s|
  00000010  66 5e 45 c6 bb 9f 7b 72  5a 47 47 47 8a 81 65 ca  |f^Eƻ.{rZGGG..e�|
  00000020  c1 a6 c9 c1 ac ee ea dd  c8 c5 bc 8c 87 7a d3 c9  |���������ż..z��|
  00000030  ab 43 3b 26 eb e5 d1 fa  fa fa e5 e4 e2 a6 9d 83  |�C;&amp;����������..|
  00000040  86 7e 67 c1 b4 8e e4 dc  c6 82 82 82 e1 dd d1 e3  |.~g��.���...����|
  00000050  dd ca e4 da bc f5 f1 e6  26 25 25 9c 91 73 f8 f3  |���ڼ���&amp;%%..s��|
  00000060  e4 c3 b9 9d d3 ca b4 4a  42 2a d1 c6 a2 6c 62 46  |�ù.�ʴJB*�ƢlbF|
  00000070  ea e6 db bb b3 9c db d3  bb 5c 54 3d f1 ee e6 dc  |��ۻ�.�ӻ\T=����|
  00000080  da d3 e7 e4 dc ce c2 9f  f8 f6 f2 76 6c 53 fc fb  |�������.���vlS��|
  00000090  f9 e9 e1 ca 17 13 09 67  4d 00 f8 f4 e8 dc d3 b5  |����...gM.����ӵ|
  </code></pre>
  <p>This the original one:</p>
  <pre><code>$ hd runner_small.gif   | head
  00000000  47 49 46 38 39 61 32 00  32 00 f7 00 00 96 8c 73  |GIF89a2.2......s|
  00000010  66 5e 45 c6 bb 9f 7b 72  5a 47 47 47 8a 81 65 ca  |f^E...{rZGGG..e.|
  00000020  c1 a6 c9 c1 ac ee ea dd  c8 c5 bc 8c 87 7a d3 c9  |.............z..|
  00000030  ab 43 3b 26 eb e5 d1 fa  fa fa e5 e4 e2 a6 9d 83  |.C;&amp;............|
  00000040  86 7e 67 c1 b4 8e e4 dc  c6 82 82 82 e1 dd d1 e3  |.~g.............|
  00000050  dd ca e4 da bc f5 f1 e6  26 25 25 9c 91 73 f8 f3  |........&amp;%%..s..|
  00000060  e4 c3 b9 9d d3 ca b4 4a  42 2a d1 c6 a2 6c 62 46  |.......JB*...lbF|
  00000070  ea e6 db bb b3 9c db d3  bb 5c 54 3d f1 ee e6 dc  |.........\T=....|
  00000080  da d3 e7 e4 dc ce c2 9f  f8 f6 f2 76 6c 53 fc fb  |...........vlS..|
  00000090  f9 e9 e1 ca 17 13 09 67  4d 00 f8 f4 e8 dc d3 b5  |.......gM.......|
  </code></pre>
  <p>You can compare these two files and every bytes are the same, I am guessing that the encoding from NodeJS is not the right one.</p>
  <p>This is the piece of code</p>
  <pre><code>var foo = &quot;71%73%70%56%57%97%50%0%50%0%247%0%0%150%140%115%102%94%69%198%187%159%123%114%90%71%71%71%138%129%101%202%193%166%201%193%172%238%234%221%200%197%188%140$&quot;
  var bytes = foo.split(&quot;%&quot;);
  
  var b = new Buffer(bytes.length);
  for (var i = 0;i &lt; bytes.length;i++) {
          b[i] = bytes[i];
  }
  
  fs.writeFile(&quot;test.txt&quot;, b,  &quot;binary&quot;,function(err) {
      if(err) {
          console.log(err);
      } else {
          console.log(&quot;The file was saved!&quot;);
      }
  });
  </code></pre>
  <p>You can try to run it on your NodeJS and see that the result is wrong.</p>
  <p>What can I do to fix it?</p>