返回顶部
首页 > 资讯 > 前端开发 > node.js >node.js学习之base64编码解码
  • 842
分享到

node.js学习之base64编码解码

nodejs 2022-06-04 17:06:10 842人浏览 八月长安
摘要

一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送。这样用途就受到了很大的限制

一. Base64编码由来

为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送。这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情 况下,做一种扩展方案来支持二进制文件的传送。把不可打印的字符也能用可打印字符来表示,问题就解决了。Base64编码应运而生,Base64就是一种 基于64个可打印字符来表示二进制数据的表示方法。

二. Base64编码原理

看一下Base64的索引表,字符选用了"A-Z、a-z、0-9、+、/" 64个可打印字符。数值代表字符的索引,这个是标准Base64协议规定的,不能更改。64个字符用6个bit位就可以全部表示,一个字节有8个bit 位,剩下两个bit就浪费掉了,这样就不得不牺牲一部分空间了。这里需要弄明白的就是一个Base64字符是8个bit,但是有效部分只有右边的6个 bit,左边两个永远是0。

查看图片

那么怎么用6个有效bit来表示传统字符的8个bit呢?8和6的最小公倍数 是24,也就是说3个传统字节可以由4个Base64字符来表示,保证有效位数是一样的,这样就多了1/3的字节数来弥补Base64只有6个有效bit 的不足。你也可以说用两个Base64字符也能表示一个传统字符,但是采用最小公倍数的方案其实是最减少浪费的。结合下边的图比较容易理解。Man是三个 字符,一共24个有效bit,只好用4个Base64字符来凑齐24个有效位。红框表示的是对应的Base64,6个有效位转化成相应的索引值再对应 Base64字符表,查出"Man"对应的Base64字符是"TWFU"。说到这里有个原则不知道你发现了没有,要转换成Base64的最小单位就是三个字节,对一个字符串来说每次都是三个字节三个字节的转换,对应的是Base64的四个字节。这个搞清楚了其实就差不多了。

查看图片

查看图片

但是转换到最后你发现不够三个字节了怎么办呢?愿望终于实现了,我们可以用两 个Base64来表示一个字符或用三个Base64表示两个字符,像下图的A对应的第二个Base64的二进制位只有两个,把后边的四个补0就是了。所以 A对应的Base64字符就是QQ。上边已经说过了,原则是Base64字符的最小单位是四个字符一组,那这才两个字 符,后边补两个"="吧。其实不用"="也不耽误解码,之所以用"=",可能是考虑到多段编码后的Base64字符串拼起来也不会引起混淆。由此可见 Base64字符串只可能最后出现一个或两个"=",中间是不可能出现"="的。下图中字符"BC"的编码过程也是一样的。

查看图片

三、node.js普通字符串编码解码:


var b = new Buffer('javascript');
var s = b.toString('base64');
// SmF2YVNjcmlwdA==


var b = new Buffer('SmF2YVNjcmlwdA==', 'base64')
var s = b.toString();
// JavaScript

编码解码并转成hex


var b = new Buffer('SmF2YVNjcmlwdA==', 'base64')
var s = b.toString('hex');
// 4a617661536372697074


var b = new Buffer('4a617661536372697074', 'hex')
var s = b.toString('utf8');
// JavaScript

四、node.js编码解码图片


var fs = require('fs');

// function to encode file data to base64 encoded string
function base64_encode(file) {
  // read binary data
  var bitmap = fs.readFileSync(file);
  // convert binary data to base64 encoded string
  return new Buffer(bitmap).toString('base64');
}

// function to create file from base64 encoded string
function base64_decode(base64str, file) {
  // create buffer object from base64 encoded string, it is important to tell the constructor that the string is base64 encoded
  var bitmap = new Buffer(base64str, 'base64');
  // write buffer to file
  fs.writeFileSync(file, bitmap);
  console.log('******** File created from base64 encoded string ********');
}

// convert image to base64 encoded string
var base64str = base64_encode('kitten.jpg');
console.log(base64str);
// convert base64 string back to image 
base64_decode(base64str, 'copy.jpg');

总结

以上就是node.js之base64编码解码的全部内容,希望本文的内容对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

--结束END--

本文标题: node.js学习之base64编码解码

本文链接: https://lsjlt.com/news/12931.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • node.js学习之base64编码解码
    一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送。这样用途就受到了很大的限制...
    99+
    2022-06-04
    node js
  • python3基础学习(base64编码
    import base64 import sys a = base64.b64encode((sys.argv[1]).encode(encoding='utf-8')).decode() b = base64.b64decode(sys...
    99+
    2023-01-31
    基础
  • nodejs之base64编码解码问题
    目录nodejs base64 编码解码普通字符串编码解码并转成hex编码解码图片nodejs 操作base64总结nodejs base64 编码解码 普通字符串 编码 var b...
    99+
    2023-02-08
    nodejs base64 base64编码解码 nodejs base64 编码解码
  • python密码学Base64编码和解码教程
    目录Base64编码编码程序输出解码程序输出差异在ASCII和base64之间缺点Base64编码 Base64编码将二进制数据转换为文本格式,通过通信通道传递,用户可以安全地处理文...
    99+
    2024-04-02
  • python密码学Base64编码和解码的方法
    本文小编为大家详细介绍“python密码学Base64编码和解码的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“python密码学Base64编码和解码的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。B...
    99+
    2023-06-30
  • mysql中Base64编码与解码
    在mysql中,有些数据我们不想让别人直观的看到,这时可以使用Base编码与解码。 MySQL在5.6版本的时候增加了to_base64和from_base64函数,在此之前没有内部函数, 用法举例:  1、to_base64  编...
    99+
    2019-10-07
    mysql中Base64编码与解码
  • node.js中怎么对字符串进行Base64编码和解码
    本篇内容介绍了“node.js中怎么对字符串进行Base64编码和解码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2024-04-02
  • node.js学习总结之调式代码的方法
    前言 你有没有曾经调式某段代码时,总觉得世界上有鬼? 你有没有曾经调式API时,总感觉是调用第三方的接口问题或者文档说明不对? 你有没有曾经调式一个bug 时,总感觉问题的来源是使用的方式不对? 你有没有在...
    99+
    2022-06-04
    调式 代码 方法
  • Python-编码(base64,md5
    Base64编码是一种“防君子不防小人”的编码方式。广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符。优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容易被破...
    99+
    2023-01-31
    Python
  • 了解MySQL中的base64编码?
    要对 Base64 进行编码,您可以使用两个功能 -TO_BASE64()FROM_BASE64()base64 编码的语法如下 -SELECT TO_BASE64(anyValue) as AnyVariableName;base...
    99+
    2023-10-22
  • 学习python的第十二天(编码,解码,
    1.编码解码 1.字符串编码 字符 --------》翻译过程 -------》数字 2.字符串解码 字符 --------》翻译过程 -------》数字 3.编码解码用到的翻译工具 中国:GBK 外国:日本—Shift_JIS,美国...
    99+
    2023-01-31
    二天 python
  • JS Base64编码解码的示例分析
    这篇文章主要介绍JS Base64编码解码的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 基础不牢,选型糟糕糟糕的技术选型往往源自自身技术广度不足。就在数月前,一个前端...
    99+
    2024-04-02
  • java base64编码、解码的三种方式
    在Java中,可以使用以下三种方式进行base64编码和解码:1. 使用Java8的java.util.Base64类(推荐)```...
    99+
    2023-08-24
    java
  • Go语言学习之JSON编码解析与使用
    目录1.Map转JSON2. Json转Map3.结构体转JSON3.1 无字段标签3.2 有字段标签3.3 匿名字段4.JSON转结构体5.切片转JSON6.JSON转切片1.Ma...
    99+
    2023-02-14
    Go语言JSON解析 Go语言JSON使用 Go JSON
  • Go语言实现Base64、Base58编码与解码
    目录1. 常见的编码2. go语言实现base64的编码与解码2.1 Base64编码原理2.2 实现Base64的编码与解码3. go语言实现base58编码与解码3.1 base...
    99+
    2024-04-02
  • C#实现Base64编码与解码及规则
    一、编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位...
    99+
    2024-04-02
  • php怎么实现Base64的编码和解码
    Base64算法是一种将二进制数据转换为ASCII字符的编码方式,使得数据可以在传输过程中不被修改或损坏,同时也可以隐藏数据的真实内容。在PHP中,可以利用内置函数或手动编写代码实现Base64的编码和解码。PHP内置函数的使用PHP中提供...
    99+
    2023-05-14
    Base64 php
  • Vue中如何使用base64编码和解码
    目录Vue使用base64编码和解码Vue路由获取query中base64解码出错总结Vue使用base64编码和解码 在项目根目录下安装 npm install --save js...
    99+
    2023-02-08
    Vue使用base64编码 Vue使用base64解码 base64编码和解码
  • php如何实现Base64的编码和解码
    这篇文章主要讲解了“php如何实现Base64的编码和解码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何实现Base64的编码和解码”吧!PHP内置函数的使用PHP中提供了两个内置...
    99+
    2023-07-05
  • Python实现base64编码
    Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作