0.1.1 • Published 10 years ago
blob64 v0.1.1
blob64
A tiny javascript library to turn byte arrays into efficient base64 strings.
This is particularly useful with msgpack, which generates byte arrays.
blob64.pack([0,0,0])
// "0000"
blob64.pack([255,255,255])
// "////"
blob64.pack([1,3,3,7])
// "0GC31m=="
Compared to using atob / btoa.
blob64([0,0,0])
// "MCwwLDA="
blob64([255,255,255])
// "MjU1LDI1NSwyNTU="
blob64([1,3,3,7])
// "MSwzLDMsNw=="
Usage with msgpack
var obj = {this:{is:{a:{msgpack:{object:'foo'}}}};
var packed = blob64.pack( msgpack.pack( obj ) );
// "WQHqQ6bpWQ9fSu6XOO6dRNDdS65ZQu6cRs9gPMDqesPlRm=="
msgpack.unpack( blob64.unpack( packed ) )
// {this:{is:{a:{msgpack:{object:'foo'}}}}
// vs alternatives
btoa( JSON.stringify( obj ) )
// "eyJ0aGlzIjp7ImlzIjp7ImEiOnsibXNncGFjayI6eyJvYmplY3QiOiJmb28ifX19fX0="
bota( msgpack.pack( obj ) )
// "MTI5LDE2NCwxMTYsMTA0LDEwNSwxMTUsMTI5LDE2MiwxMDUsMTE1LDEyOSwxNjEsOTcsMTI5LDE2NywxMDksMTE1LDEwMywxMTIsOTcsOTksMTA3LDEyOSwxNjYsMTExLDk4LDEwNiwxMDEsOTksMTE2LDE2MywxMDIsMTExLDExMQ=="
In the above examples, blob64 is 68% the size of JSON + btoa, the next closest competitor. This advantage increases quite a bit if your data has lots of integers in it.
Compatable with nodejs, script tag includes, and requirejs.
MIT Licence