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

字节是用来存储的,一个字节为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. UFLDL深度学习笔记 (五)自编码线性解码器

    UFLDL深度学习笔记 (五)自编码线性解码器 1. 基本问题 在第一篇 UFLDL深度学习笔记 (一)基本知识与稀疏自编码中讨论了激活函数为\(sigmoid\)函数的系数自编码网络,本文要讨论&q ...

  2. 嵌入式开发之davinci--- 8127 中osd yuv 数据分析

    YUV数据类型总结: YUV格式有两大类:planar和packed.对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V.对于packed的YUV格 ...

  3. Github上好的Android开源框架

    1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载: (2)  网络请求的排序(scheduli ...

  4. Convex optimization 凸优化

    zh.wikipedia.org/wiki/凸優化 以下问题都是凸优化问题,或可以通过改变变量而转化为凸优化问题:[5] 最小二乘 线性规划 线性约束的二次规划 半正定规划 Convex functi ...

  5. Nvidia NVENC 硬编码预研总结

    本篇博客记录NVENC硬编码的预研过程 github:  https://github.com/MarkRepo/NvencEncoder 步骤如下: (1)环境搭建 (2)demo编译,测试,ARG ...

  6. ARDUINO使用GPRS发送GPS数据到OneNet测试

    功能: 测试把固定的GPS数据发送到OneNet平台 调试途中碰到的问题 ARDUINO不支持sprintf的double打印,只能转换为char字符串然后再%s打印 #include <Tim ...

  7. Python:笔记(2)——函数与模块

    Python:笔记(2)——函数与模块 Python函数 关于函数 1.我们可以使用Help来查看函数的帮助信息 2.调用函数的时候,如果传入的参数数量或者类型不符合均会报错. 3.函数名其实就是一个 ...

  8. dojo 官方翻译 dojo/json 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/json.html#dojo-json require(["dojo/json&q ...

  9. [原创]java WEB学习笔记13:JSP介绍(背景,特点,原理)

    JSP介绍:(理解) 1)JSP背景 ①在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变: ②如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态 ...

  10. 【leetcode刷题笔记】Binary Tree Level Order Traversal(JAVA)

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...