JJJ:base64编码和字节字符串普通字符串

文章目录

    • base64编码
      • Base64 编码原理
      • Python 中的 Base64 编码
      • URL 和 Filename 安全的 Base64 编码
      • 注意事项
    • 字节字符串和普通字符串
      • 举例说明
      • 字节字符串操作
      • 如何创建字节字符串
      • 字节字符串与普通字符串的转换

base64编码

Base64 编码是一种广泛使用的二进制到文本的编码方案,主要用于在电子邮件、URL、JSON 数据等环境中安全传输二进制数据。它将二进制数据转换为 ASCII 文本字符串,确保数据能够在各种系统和协议中顺利传输,避免因二进制数据导致的兼容性问题。

Base64 编码原理

Base64 编码使用一组64个字符(A-Z,a-z,0-9,+ 和 /,有时最后一字符用 “=” 替换填充空白)来表示二进制数据。编码过程如下:

  1. 将二进制数据分为6比特(bit)的组,每组可以表示64种不同的值(2^6 = 64)。
  2. 每个6比特组转换为一个十进制数。
  3. 将这个十进制数映射到Base64字符集中的相应字符。

Python 中的 Base64 编码

在 Python 中,Base64 编码和解码可以通过 base64 模块完成。以下是一个简单的示例:

import base64# 原始二进制数据
original_data = b'This is a test.'# 编码为 Base64
encoded_data = base64.b64encode(original_data)
print(encoded_data)  # 输出: b'VGhpcyBpcyBhIHRlc3Qu'# 解码 Base64 回原始数据
decoded_data = base64.b64decode(encoded_data)
print(decoded_data)  # 输出: b'This is a test.'

URL 和 Filename 安全的 Base64 编码

在 URL 或文件名中使用 Base64 编码时,通常会使用 URL 和文件名安全的 Base64 编码,其中 “+” 和 “/” 字符被替换成 “-” 和 “_”,并且不使用填充字符 “=”。在 Python 中,可以使用 urlsafe_b64encodeurlsafe_b64decode 方法:

import base64# 使用 URL 和 filename 安全的 Base64 编码
url_safe_encoded_data = base64.urlsafe_b64encode(original_data)
print(url_safe_encoded_data)  # 输出: b'VGhpcyBpcyBhIHRlc3Q.'# 解码 URL 和 filename 安全的 Base64 编码
url_safe_decoded_data = base64.urlsafe_b64decode(url_safe_encoded_data)
print(url_safe_decoded_data)  # 输出: b'This is a test.'

注意事项

  • Base64 编码后的数据比原始数据大约长 33%,因此在存储空间有限的情况下可能不是最佳选择。
  • Base64 编码不提供加密,仅用于编码和解码,不应视为一种安全措施。

总之,Base64 编码是处理和传输二进制数据时的一种常见工具,特别是在需要将数据转换为纯文本格式的场景下。

字节字符串和普通字符串

在 Python 中,b 前缀放在字符串前,如 b'your_string',表示这是一个字节字符串(bytes 类型),而不是普通的 Unicode 字符串(str 类型)。字节字符串中的每个元素都是一个字节(即 0-255 的整数),这在处理二进制数据、网络通信、文件 I/O 等场景中非常有用。

举例说明

# 普通字符串
normal_str = "hello"# 字节字符串
byte_str = b"hello"# 检查类型
print(type(normal_str))  # 输出: <class 'str'>
print(type(byte_str))    # 输出: <class 'bytes'>

字节字符串操作

字节字符串可以进行一些特定于二进制数据的操作,比如拼接、索引、切片等,但它们不支持普通字符串的一些方法,如 str.join()str.split() 等,因为这些方法设计用于处理 Unicode 字符串。

如何创建字节字符串

除了使用 b 前缀外,还可以通过 str.encode() 方法将普通字符串转换为字节字符串,或者使用 bytes() 构造函数:

# 从普通字符串转换
encoded_str = "hello".encode('utf-8')  # 使用 UTF-8 编码# 使用 bytes 构造函数
bytes_from_list = bytes([104, 101, 108, 108, 111])  # 对应 'hello' 的 ASCII 值

字节字符串与普通字符串的转换

在需要将字节字符串转换回普通字符串时,可以使用 bytes.decode() 方法:

# 从字节字符串转换回普通字符串
decoded_str = byte_str.decode('utf-8')

总结来说,b 前缀的使用是为了明确指出字符串是以字节的形式存在,而非 Unicode 字符,这对于处理二进制数据或在网络层面上操作数据是非常重要的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小山菌_代码随想录算法训练营第四十三天| 121. 买卖股票的最佳时机 、

121. 买卖股票的最佳时机 文档讲解&#xff1a;代码随想录. 买卖股票的最佳时机 视频讲解&#xff1a;动态规划之 LeetCode&#xff1a;121.买卖股票的最佳时机1 状态&#xff1a;已完成 代码实现 class Solution { public:int maxProfit(vector<int>& prices) {// …

餐饮店油烟净化器安装工程方案:保障清新厨房环境

我最近分析了餐饮市场的油烟净化器等产品报告&#xff0c;解决了餐饮业厨房油腻的难题&#xff0c;更加方便了在餐饮业和商业场所有需求的小伙伴们。 随着环保要求的不断提高&#xff0c;餐饮店的油烟排放问题受到越来越多的关注。为了保障清新的厨房环境&#xff0c;安装高效…

Hadoop中的副本、校验和(数字指纹)、block

1.副本&#xff1a;为了系统容错&#xff0c;文件系统会对所有的数据块进行副本复制 1.副本生成和数量 在数据块被写入HDFS的过程中&#xff0c;NameNode会根据副本策略决定每个数据块的副本数量和存储位置&#xff0c;Hadoop默认副本数量是3&#xff0c;每个数据块的副本会被存…

01-引论-操作系统的目标和作用

操作系统的目标 1.方便性 2.有效性 3.可扩充性 4.开放性 操作系统的目标与应用环境有关 在不同的应用环境下&#xff0c;操作系统的重点和功能可能会有所不同。例如&#xff0c;对于桌面操作系统&#xff0c;用户界面的友好性和多媒体功能可能是重点&#xff1b;对于服务…

TCP/IP模型和OSI模型的区别

OSI模型&#xff0c; 是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;将计算机网络通信划分为七个不同的层级&#xff0c;每个层级都负责特定的功能。每个层级都构建在其下方的层级之上&#xff0c;并为上方的层级提供…

老杜Mysql 基础教程 笔记

Mysql 表 : ​ 行&#xff1a;数据记录 ​ 列&#xff1a;字段名&#xff0c;数据类型&#xff0c;约束条件 DQLselect查询语句DMLinsert update delete表中增删改语句DDLcreate drop alter表结构增删改TCLcommit rollback事务控制语句DCLgrant revoke数据库权限控制 导入…

电商为何需要深耕私域运营?

在电商行业这片红海中&#xff0c;竞争日益激烈&#xff0c;获取新用户、提升用户粘性和复购率成为每个电商企业面临的重大挑战。而私域运营&#xff0c;作为近年来兴起的一种新型营销策略&#xff0c;正逐渐成为电商企业突破瓶颈、实现持续增长的关键。本文将从多个维度探讨电…

职升网:考取中专文凭的途径主要有三种!

考取中专文凭的途径主要有三种&#xff1a;成人高考、网络教育和自学考试。以下是针对每种途径的详细解释和说明&#xff1a; 成人高考 适合人群&#xff1a;适合已经工作的成年人&#xff0c;特别是希望在工作之余提升学历的人群。 报考层次&#xff1a;可以选择高起专或高…

使用bypy丝滑传递百度网盘-服务器文件

前言 还在为百度网盘的数据集难以给服务器做同步而痛苦吗&#xff0c;bypy来拯救你了&#xff01;bypy是一个强大而灵活的百度网盘命令行客户端工具。它是基于Python开发的开源项目&#xff0c;为用户提供了一种通过命令行界面与百度网盘进行交互的方式。使用bypy&#xff0c;…

博美犬插画:成都亚恒丰创教育科技有限公司

​博美犬插画&#xff1a;萌动心灵的细腻笔触 在浩瀚的艺术海洋中&#xff0c;有一种艺术形式总能以它独有的温柔与细腻&#xff0c;触动人心最柔软的部分——那便是插画。而当插画遇上博美犬这一萌宠界的明星&#xff0c;便诞生了一幅幅令人爱不释手的作品&#xff0c;成都亚…

ProFormList --复杂数据联动ProFormDependency

需求&#xff1a; &#xff08;1&#xff09;数据联动&#xff1a;测试数据1、2互相依赖&#xff0c;测试数据1<测试数据2,测试数据2>测试数据1。 &#xff08;2&#xff09;点击添加按钮&#xff0c;添加一行。 &#xff08;3&#xff09;自定义操作按钮。 &#xff0…

To美术-渲染管线及优化方向(CPU方向)

一、CPU与GPU 1、CPU与GPU的区别 橙黄色&#xff1a;控制单元   橙红色&#xff1a;存储单元  绿色&#xff1a;计算单元 CPU:结构组成复杂、控制逻辑丰富&#xff0c;计算量小&#xff0c;适合复杂运算 GPU&#xff1a;结构组成简单&#xff0c;核心数量多&#xff0c;计…

音频demo:将PCM数据封装成wav格式文件(不依赖第三方库)

1、README a. 编译 编译时需要编译成32位的可执行程序&#xff08;int需要指定为4字节&#xff09;&#xff0c;所以如果需要在64位主机上运行该程序&#xff0c;编译时就需要在Makefile上添加-m32选项&#xff08;默认已加&#xff09;&#xff0c;如果运行的主机是32位的则…

吴恩达机器学习笔记2.1 - 什么是机器学习

吴恩达机器学习笔记2.1 - 什么是机器学习 最早的机器学习 1959年&#xff0c;亚瑟塞缪尔(Arthur Samuel)将机器学习定义为“Field of study that gives computers the ability to learn without being explicitly programmed”&#xff08;无需编程即可学习的研究领域&#xf…

ROS中不同文件之间的引用小结

在比较大的一些程序中&#xff0c;往往会涉及到一些不同模块的调用&#xff0c;如果这些东西放在一个.cpp文件内&#xff0c;这个文件会变的特别长&#xff0c;因此会使用多个文件互相引用。那么如何在ROS下进行这种不同文件下的引用呢&#xff0c;根据最近所学&#xff0c;简单…

tomcat 安装和优化

tomcatat tomcat和http一样&#xff0c;都是用来处理动态页面的 tomcat也可以作为web服务器&#xff0c;开源的 php.php tomcat.jsp nginx.html tomcat使用java代码写的程序&#xff0c;运行的是java的web服务程序 tomcat的特点和功能&#xff1a; 1、servlet容器&…

MySQL——第一次作业

部署MySQL 8.0环境 1&#xff0c;删除之前存在的MySQL程序 控制面板删除 2&#xff0c;删除完成后下载MySQL 官网&#xff1a; https://www.mysql.com 在window下下载MSI版本 3&#xff0c;自定义安装 4&#xff0c;配置环境变量 1&#xff0c;系统高级系统设置 2&#xff…

Android面试题汇总-RecyclerView、Fragment、WebView、性能优化等

一、RecyclerView 1、RecyclerView的多级缓存机制,每一级缓存具体作用是什么,分别在什么场景下会用到哪些缓存 RecyclerView的多级缓存机制是为了提高滚动和数据更新的效率而设计的。每一级缓存都有其特定的作用和使用场景。以下是各级缓存的作用和它们的使用场景&#xff1a…

子序列问题

目录 最长递增子序列 摆动序列 最长递增子序列的个数 最长数对链 最长定差子序列 最长的斐波那契子序列的长度 最长等差数列 等差数列划分II-子序列 声明&#xff1a;接下来主要使用动态规划来解决问题&#xff01;&#xff01;&#xff01; 最长递增子序列 题目 思路…

Python 中,NumPy 的数组操作

应用场景&#xff1a; 数据分析和预处理&#xff1a;对大量的数据进行清洗、筛选、转换等操作&#xff0c;例如去除异常值、标准化数据等。 图像和信号处理&#xff1a;处理图像的像素值、音频或视频的信号数据。 机器学习和深度学习&#xff1a;对特征数据进行操作&#xff0c…