Node Buffer 1 – Encoding & Decoding

Buffer 学习第一部分,编解码。

场景 1,Basic Authentication

Schema:Authorization: <type> <credentials>

;(function() {
  'use strict';

  // eg. 1. Basic authentication
  const user = 'johnny';
  const pass = 'c-bad';
  const authstring = `${user}:${pass}`;
  
  // encode
  const buf = Buffer.from(authstring);
  const encoded = buf.toString('base64');
  
  console.log({encoded});
  
  // decode
  const buf1 = Buffer.from(encoded, 'base64');
  const decoded = buf1.toString();
  
  console.log({decoded});
}());

场景 2,Base64 Images

Schema:data:[<media type>][;base64],<data>

;(function() {
  'use strict';

  const fs = require('fs');

  const mime = 'image/png';
  const encoding = 'base64';

  // encode
  const data = fs.readFileSync('./fruit.png').toString(encoding);
  const uri = `data:${mime};${encoding},${data}`;

  console.log(uri);

  // decode
  const data1 = uri.split(',')[1];
  const buf = Buffer.from(data1, 'base64');
  fs.writeFileSync('./fruit1.png', buf);
}());

参考:

  1. Alex Young, Marc Harter. Node in Practice. 2015
  2. https://en.wikipedia.org/wiki/Data_URI_scheme
  3. https://www.lemoda.net/c/write-png/

作者: V

Web Dev

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s