字符是用来显示的,如中文字符,英文字符,其类型我字符(串)类型;

字节是用来存储的,一个字节为8bit。由于字节是8位,无法对中文编码,因此诸如a=b'中文'的写法是错误的。但英文标点数字是可以的,如a=b'abc';

字符要存储在计算机中或进行传输,就要转化成字节,就涉及的编码方式。为了兼顾统一和内存节省的原则,编码方式有很多。

对字符编码采用encode(encoding,optional)方法,参数1为编码方式,如utf-8,base64,参数2为可选参数。

对字节解码用decode(encoding),参数表示解码方式。

记住:带b的类型为字节(bytes)型,不带b的,为字符类型。二者是不同的数据结构。

base64模块:

产生原因:base64模块将一串字节码(二进制流)以6个bit为一组进行编码,(因为6个比特表示的字符在ascii码中是可见字符),所以base64的存在是将所有的字符(可见不可见)转化成可见字符。这样做的原因是避免传输过程中因为不可见字符的存在而容易出错。

编码方式:由于是6个bit为一组,而正常编码是8bit为一组,因此3个字节的字符可以编码出4个字符,这4个字符都可见。

因为是将字节码编码,所以base64.b64encode()只能处理字节流。

base64编码可以将二进制文件(如图片,音频等)编码成文本文件进行传输,到目的地后,再解码成二进制文件,这样有助于加快传输(因为不同类型的数据再网络上以不同的方式传送,耗时)。

例如图片:

import b64base
with open('cat.jpg','rb') as fp:
    bPic=fp.read()#将图片转化成二进制数据
b64Pic=base64.b64encode(bPic)#将图标编码成b64格式(仍然是二进制)
b64strPic=b64Pic.decode()#将二进制转成字符串
 
with open('cat.jpg','wb') as fp:
    bPic=base64.b64decode(b64strPic)#将b64转化成二进制(这里使用b64Pic也可以,b64解码既可以是字符串也可以是对应字符串二进制,结果都一样)
    fp.write(bPic)#转化成图片

关于字符,字节与base64编码的理解的更多相关文章

  1. 前端对base64编码的理解,原生js实现字符base64编码

    目录 常见对base64的认知(不完全正确) 多问一个为什么,base64到底是个啥? 按照我们的思路实现一下 到这里基本就实现了,结果跟原生的方法打印的是一样的 下一次 @( 对于前端工程师来说ba ...

  2. 关于Base64编码的理解

    版权声明:本文为[viclee]原创,如需转载请注明出处~ https://blog.csdn.net/goodlixueyong/article/details/52132250 之前在很多业务中都 ...

  3. 将图片文件转化为字节数组字符串,并对其进行Base64编码处理,以及对字节数组字符串进行Base64解码并生成图片

    实际开发中涉及图片上传并且量比较大的时候一般处理方式有三种 1.直接保存到项目中 最老土直接方法,也是最不适用的方法,量大对后期部署很不方便 2.直接保存到指定路径的服务器上.需要时候在获取,这种方式 ...

  4. Android开发之将图片文件转化为字节数组字符串,并对其进行Base64编码处理

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, 转载请说明出处. /** * @将图片文件转化为字节数组字符串,并对其进行Base64编码处理 * ...

  5. 关于Base64编码

    作者:唐风 Base 64是一种比较古老的编码方式,在通信中非常常见.它实现很简单. What? "Base64是一种基于64个可打印字符来表示二进制数据的表示方法(来自维基)". ...

  6. 详解Base64编码和解码

    Base64是最常用的编码之一,比如开发中用于传递参数.现代浏览器中的<img />标签直接通过Base64字符串来渲染图片以及用于邮件中等等.Base64编码在RFC2045中定义,它被 ...

  7. BASE64编码乱码问题的浅层分析与解释

    本文由作者朱臻授权网易云社区发布. 1问题案例 曾在开发过程中,我们遇到了BASE64编码乱码的问题,该问题的场景如下: 当web前端,将带有中文字符的字符串base64编码后,传到后端.当后端将数据 ...

  8. JavaScript:详解 Base64 编码和解码

    Base64是最常用的编码之一,比如开发中用于传递参数.现代浏览器中的<img />标签直接通过Base64字符串来渲染图片以及用于邮件中等等.Base64编码在RFC2045中定义,它被 ...

  9. Kotlin/Java Base64编码和解码(图片、文件)

    原文: Kotlin/Java Base64编码和解码(图片.文件) | Stars-One的杂货小窝 最近在项目中使用到了Base64编码和解码,便是稍微写篇文章记录一下 PS:本文代码都是使用Ko ...

随机推荐

  1. ubuntu 解决更换源失败问题

    用图形界面命令打开窗口在终端输入 gksudo nautilus打开一个图形窗口 (注意在这个图形窗口下 任何目录下的文件都是可以删除的) /ect/apt删除下面的sources.list和备份文件 ...

  2. PHPUnit_Framework_Assert单元测试

    先发下简书的干货: 教你一步一步写一个phpunit testcase:https://www.jianshu.com/p/ba6829a6f3ec 程序地址 https://github.com/y ...

  3. 图片剪裁控件——ClipImageView

    这段时间在做自己的项目时,须要使用到图片剪裁功能,当时大概的思考了一些需求.想到了比較简单的实现方法.因此就抽了点时间做了这个图片剪裁控件--ClipImageView 这里先贴上ClipImageV ...

  4. 【BZOJ4033】[HAOI2015]树上染色 树形DP

    [BZOJ4033][HAOI2015]树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染 ...

  5. vue实现简易留言板

    首先引入vue.js <script src="vue.js"></script> 布局 <div id="div"> &l ...

  6. 使用weka训练一个分类器

    1 训练集数据 1.1 csv格式 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setos ...

  7. DNN 数据的表示

  8. Action三种编写方式

    1.     创建普通类不实现接口与继承类 2.     实现Action接口 3.     继承ActionSupport类(常用)

  9. 有关numpy.random下的API具体含义

    1.numpy.random.random(size=None) Return random floats in the half-open interval [0.0, 1.0). 返回size大小 ...

  10. LeetCode:乘法表中的第K小的数【668】

    LeetCode:乘法表中的第K小的数[668] 题目描述 几乎每一个人都用 乘法表.但是你能在乘法表中快速找到第k小的数字吗? 给定高度m .宽度n 的一张 m * n的乘法表,以及正整数k,你需要 ...