nodejs中的base64转码/解码

在nodejs中怎么将字符串转化为base64呢? 是不是也像php中的base64_encode()一样简单呢?

作为javascript的nodejs, 对于编码字符串有个更合乎逻辑的方法, 而不是设置各种不一样的全局方法.

入题吧, 看如下的实现方法:

编码(encode)-将正常的字符串转为base64串

1
2
3
var str = new Buffer('JavaScript');
var base_str = str.toString('base64');
// base_str = SmF2YVNjcmlwdA==

解码(decode)-将base64串转为正常的字符串

1
2
3
var base_str = new Buffer('SmF2YVNjcmlwdA==', 'base64')
var str = base_str.toString();
// str = JavaScript

关于Buffer的种种

  • 什么时候该用buffer,什么时候不该用
    有测试证明: 我们在保存字符串的时候,该用string还是要用string,就算大字符串拼接string的速度也不会比buffer慢。
    那什么时候我们又需要用buffer呢?没办法的时候,当我们保存非utf-8字符串,2进制等等其他格式的时候,我们就必须得使用了。
  • buffer不得不提的8KB
    buffer著名的8KB载体,举个例子好比,node把一幢大房子分成很多小房间,每个房间能容纳8个人,为了保证房间的充分使用,只有当一个房间塞满8个人后才会去开新的房间,但是当一次性有多个人来入住,node会保证要把这些人放到一个房间中,比如当前房间A有4个人住,但是一下子来了5个人,所以node不得不新开一间房间B,把这5个人安顿下来,此时又来了4个人,发现5个人的B房间也容纳不下了,只能再开一间房间C了,这样所有人都安顿下来了。但是之前的两间房A和B都各自浪费了4个和3个位置,而房间C就成为了当前的房间。
    具体点说就是当我们实例化一个新的Buffer类,会根据实例化时的大小去申请内存空间,如果需要的空间小于8KB,则会多一次判定,判定当前的8KB载体剩余容量是否够新的buffer实例,如果够用,则将新的buffer实例保存在当前的8KB载体中,并且更新剩余的空间。
  • 独享的空间
    如果你想创建一个独享的空间,独立的对这块内存空间进行读写,有两种办法,1是实例化一个超过8KB长度的buffer,另外一个就是使用slowbuffer类。
  • 清空buffer
    刷掉一块buffer上的数据最快的办法是buffer.fill

阅读参考:

关于Buffer类的详细介绍参见: