Python基础之进制及编码

Python实现二进制转十六进制,附完整代码 该程序首先输入一个二进制字符串,并将其填充到4的倍数长度。最后,使用hex()将整数转换为十六进制字符串,并将结果转换为大写字母形式。二进制和十六进制是计算机领域中常见的数字表示方法。Python是一种易于使用和流行的编程语言,提供了许多实用工具来处理数字和二进制。该程序的时间复杂度为O(n),其中n为二进制字符串的长度。下面是一个使用Python编写的二进制转十六进制的示例程序。该程序输入一个二进制字符串,输出其等效的十六进制表示。以上是Python实现二进制转十六进制,并附有完整代码的文章。 阅读详情

Python基础之进制及编码


了解计算机中必备的常识知识及常见名词背后的含义。

概要:

  • python代码的运行方式
  • 进制
  • 计算机中的单位
  • 编码

1. Python代码的运行方式

  • 脚本式
python3 - /PycharmProjects/day03/6.作业题讲解.py
  • 交互式
python

2. 进制

  • 二级制
#逢二进一
二进制:十进制
0:0 
1:1
10:2
11:3
100:4
101:5
110:6
111:
1000:
  • 六进制
  • 十进制
  • 八进制
  • 十六进制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6nP8YiG-1669560611782)(E:\Python\笔记\assets\image-20221127112042383.png)]

2.1 进制转换

image-20221127113219547
  • 在Python 中10进制以整型数据的形式存在
  • 2、8、16进制以字符串的形式存在
  • 2进制与8进制不能直接转换
十进制转换为二进制、
v = bin(23)
print(v)
#0b10
十进制转换为8进制
v1 = oct(36)
print(v1)
#0o44
十进制转换为16进制
v2 = hex(100)
print(v2)
#0x64
#二进制转换为十进制
d1 = int("0b10",base = 2)
print(d1)
#2

#八进制转换为十进制
d2 = int("0o44",base = 8)
print(d2)
# 36
#16进制转换为10进制
d3 = int("0x64",base = 16)
print(d3)
#100

3. 计算机中的单位

由于计算机中本质上所有的东西以为二进制存储和操作的,为了方便对于二进制值大小的表示,所以就搞了一些单位。

  • b(bit),位
1 ,1位
13,2位
147,3位
....
  • B (Byte),字节
8位是一个字节。
1100 1011 ,一个字节
1010 1000 1100 1001 ,两个字节
  • K (kilobyte),千字节
1024B=1K
1K = 1024B*8b
  • M (megabyte) ,兆字节
1024KB=1M
1M=1024K=1024*1024B=1024*1024*8bit
  • G (Gigabyte),吉字节/千兆
1024M=1G
  • T( Trillionbyte)万亿字节/太字节
1TB=1024GB
  • 其他还有:
    • 1PB( Petabyte,千万亿字节,拍字节)=1024TB
    • 1EB( Exabyte,百亿亿字节,艾字节)=1024PB
    • 1ZB(Zettabyte,十万亿亿字节,泽字节)=1024EB
    • 1YB( Yottabyte,一亿亿亿字节,尧字节)=1024ZB
    • 1BB( Brontobyte,千亿亿亿字节)=1024YB

练习

#假设1个汉字需要2个字节(2B=16位来表示,如:1000101011001100),那么1G流量可以通过网络传输多少汉字呢?(计算机传输本质上也是二进制)
1G = 1024M=1024*1024k=1024*1024*1024B=1073741824B
即536870912个汉字

#假设1个汉字需要2个字节(2B=16位来表示,如:1000101011001100),那么500G硬盘可以存储多少个汉字?
536870912*500=268435456000

4. 编码

编码,文字和二进制之间的一个对照表。

4.1 ASCII编码

ASCII规定使用一个字节来表示字母与二进制的对应关系。

00000000
00000001
00000010
........
11111111
2**8=256
  • ASCII表

在这里插入图片描述
在这里插入图片描述

官方网址:https://www.ASCIItable.com/

4.2 gb-2312编码

  • gb-2312编码,由国家信息标准委员会制作(1980年)。
  • gbk编码,对gb2312进行扩展,包含了中日韩等文字(1995年)。

与二进制的对应关系中具有如下逻辑

  • 单字节表示,用一个字节表示对应关系。英文2**8=256。
  • 双字节表示,用两个字节表示对应关系。中文汉字2**16=65536。

4.3 Unicode

Unicode也被称为万国码,为全球的每个文字都分配了一个码位(二进制表示)。

  • Ucs2
用固定的两个字节来表示一个字符
00000000 00000000

2**16= 65535
  • Ucs4
用固定的四个字节来表示一个字符

2**32=  4294967296

参考网址:https://home. Unicode.org/

https:// Unicode-table.com/en/blocks/

  • 无论是Ucs2和ucs4都有缺点:浪费空间

    文字   十六进制     二进制
      A     0041     01000001                                  :ASCII
      A     0041     0o0000o0 01000001                         :Ucs2
      A     0041     0o000000000o000o 00000000 o1000001        :Ucs4
      
    #所以在文件存储或者网络传输时一般不会直接使用 Unicode。
    #而在内存中会使用 Unicode。
    

    4.4 UTF-8

    包含所有文字和二进制的对应关系,全球应用最为广泛的一种编码(站在巨人的肩膀上功成名就)本质上: UTF-8是对 Unicode的压缩,用尽量少的二进制去与文字进行对应。

 Unicode码位范围        UTF-8
oo00 ~ 0o7E          用1个字节表示
0080 ~ 07FE          用2个字节表示
0800 - FFFE          用3个字节表示
10000 ~ 10FFFF       用4个字节表示

压缩流程:

  • 第一步:选择转换模板
码位范围(十六进制)              转换模板
0000 ~ 007F                  0XXXXXXX
0080 ~07FF                   110XXXXX 10XXXXXX
0800 - FFFE                  1110XXXX 10XXXXXX 10XXXXXX
10000 ~ 1OFEFF               11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

例如:
"B”对应的 Unicode码位为0042,那么他应该选择的一个模板。
"a”对应的 Unicode码位为01E3。则应该选择第二个模板。
“李”对应的 Unicode码位为674E,则应该选择第三个模板。
😁对应的 Unicode码位为1F601,则应该选择第四个模板。

注意:一般中文都使用第三个模板(3个字节),这也就是平时大家说中文在UTF-8中会占3个字节的原因了。

  • 第二部:在模板中填入数据
李->674E->110 011101 001110
根据模板去套入数据
1110XXXX 10XXXXXX 1OXXXXXX
1110XXXX 10XXXXXX 10001110
11100110 10011101 10001110
# 即,先转为二进制,而后根据几个×对应几位数,从后往前补充,不够补0

😁->1F601-> 11111 011000 000001

11110XXX 10XXXXXX 10XXXXXX 10XXXXXX
11110XXX 10XXXXXX 10XXXXXX 10000001
11110XXX 10XXXXXX 10011000 10000001
11110XXX 10X11111 10011000 10000001
11110000 10011111 10011000 10000001

4.5 Python相关的编码

  • 字符串(str) Unicode处理
  • 字节(byte) UTF-8 or gbk编码
v1 = "李"
"李".encode("UTF-8")#P70
"李".encode("gbk")

将一个字符串写入到一个文件中。

name="一giao我里giao"
data=encode("UTF-8")
#打开一个文件
file_object = open ( "log.txt ",mode="wb" )
#在文件中写内容
file_object.write(data)
#关闭文件
file_object.close( )

总结

  1. ASCII编码、 Unicode字符集、UTF-8编码本质上都是字符与二进制的关系
    • ASCII,字符和二进制的对照表。
    • Unicode,字符和二进制(码位)的对照表。
    • UTF-8,对 Unicode字符集的码位进行压缩处理,间接也维护了字符和二进制的对照表。
  2. Ucs2和Ucs4指的是使用多少个字节来表示 Unicode字符集的码位。
  3. 目前最广泛的编码为: UTF-8,他可以表示所有的字符且存储或网络传输也不会浪费资源(对码位进行了压缩)。
  4. 二进制、八进制、十进制、十六进制其实就是进位不同。
  5. 基于Python实现二进制、八进制、十进制、十六进制之间的转换。
  6. 一个字节8位
  7. 计算机中常见单位之间的关系。
  8. 汉字,用gbk编码需要用2个字节;用UTF-8编码需要用3个字节。
  9. 基于Python实现将字符串转换为字节(UTF-8编码)
#字符串类型
name ="乔布斯"
#字符串转换为字节类型
data = name.encode("utf-8")
#把字节转换为字符串
data.decode("utf-8")

10.基于Python实现将字符串转换为字节(gbk编码)

11.计算机中的所有数据都是以二进制的形式去执行和存储的。

环境科研人必备:手把手教你用EPISuite 4.1批量预测化合物毒性(附ECOSAR实战) 本文详细介绍了EPISuite 4.1在环境毒理学研究中的应用,重点解析了ECOSAR模块的化合物毒性预测技术。通过批量处理实战和科研案例,帮助环境科研人员快速评估化学物质对水生生态系统的风险,提升工作效率。文章还涵盖了EPISuite核心模块的功能分类及ECOSAR模型的技术原理与算法特点。 阅读详情

相关推荐

SSD性能测试进阶:用fio的io_uring引擎榨干你的NVMe硬盘

本文深入探讨了如何利用fio的io_uring引擎对NVMe SSD进行深度性能测试。通过对比传统libaio引擎,详解了io_uring低开销、高并发的优势。文章提供了从测试矩阵设计、队列深度分析到写入放大观察和尾延迟可视化的完整进阶方法,并附有实战案例与脚本,旨在帮助用户科学压榨NVMe硬盘的极限性能,获取更真实的评估数据。

weixin_29247219的博客 326

python 数字进制

11(啥都不加默认为十进制)

许浑的博客 1054

雷达信号处理中的CLEAN算法实现与优化

在信号处理领域,杂波抑制是提升目标检测性能的关键技术。CLEAN算法作为一种迭代去卷积方法,通过逐步提取最强信号分量并消除其影响,有效解决了传统方法在复杂环境下的局限性。该算法结合自适应阈值和噪声基底估计,显著提高了雷达信号处理的精度和鲁棒性。在工程实践中,CLEAN算法广泛应用于气象雷达、地物杂波抑制等场景,通过Matlab仿真可以快速验证算法性能并优化参数设置。本文重点探讨了CLEAN算法在雷达信号处理中的实现细节和优化技巧,包括距离徙动补偿、多普勒补偿等关键技术。

weixin_32430941的博客 264

用Python实现进制转换,这一篇教程就够了

在转换之前,我们先了解以下各种进制十进制(Decimal)我们所熟知的十进制,其实是从 0 开始,数到 9 之后,就跳到 10,这样就变成了 10,数数大家总会把二进制(Binary)二进制同理,从 0 开始也就是 00(前面的一个0可以省去,但是为了更好的描述,所以保留),到 01,也变成了 10【对应十进制中的 3】,然后是 11【对应十进制中的 4】,100【十进制中的5】。。。以此类推。

m0_59162248的博客 1万+

从波形图到参数调优:一次无感BLDC电机启动失败的深度解析

本文深入解析无感BLDC电机启动失败案例,通过波形分析揭示参数不匹配和IPM保护机制触发等关键问题。详细探讨了过零点检测、PWM周期设置及强拖参数调优的底层逻辑,并分享IPM模块保护机制与实战调优技巧,最终实现99.98%的启动成功率。

weixin_29182481的博客 820

三极管简单振荡电路实现:从零开始的实战示例

通过一个基础实例,手把手教你如何利用三极管构建简单的振荡电路,深入理解三极管在实际电路中的工作原理与应用技巧。

weixin_32836713的博客 1202

day04 进制和编码

day04 进制和编码 课程目标:讲解计算机中一些必备的常识知识,让学员了解一些常见名词背后的含义(重在理解)。 课程概要: python代码的运行方式 进制 计算机中的单位 编码 文章目录day04 进制和编码1.Python代码运行方式2.进制2.1 进制转换3. 计算机中的单位4.编码4.1 ascii编码4.2 gb-2312编码4.3 unicode4.4 utf-8编码4.5 Python相关的编码总结 1.Python代码运行方式 脚本式 python3 ~/PycharmProjec

厚积而薄发 674

PTGui使用教程

PTGui使用教程为啥使用ptgui开始使用ptgui 为啥使用ptgui ptgui是一个全景拼接软件,在海思hi3559上做视频拼接的时候,需要拼接参数,这是就需要使用到ptgui,这里可以在该网站下下载ptgui:下载地址 开始使用ptgui 第一步,加载图片,我这里添加了三幅图 然后添加控制点(可以先多对准几次图像,这样会自动生成一些控制点,但是不保证准确),建议控制点不要太密集 点开镜头设置,勾选以下几个选项以及配置好镜头类型,如下图 点开优化器,在高级界面中配置如下参数,最后点

what_wrong的博客 1万+

Python中的进制转换代码(新手)

很多人在需要解决进制转换时计算很容易出错,前段时间这个问题可折磨的我很是头疼,为此看了一些资料加上自己的理解写了一个小程序,具体如下: 首先,python中有现成的转换函数可以利用 十进制转二进制:a=bin(b) 十进制转八进制:a=oct(b) 十进制转十六进制:a=hex(b) 1.我们引入python中的第三方库:thinker创建一个可视化窗口 import tkinter as tk win = tk.Tk() win.title('十进制与其他进制的转换') win.geome

qq_55805241的博客 4151

Linux | Ubuntu18.04安装WIFI6 AX201驱动完整教程

本节介绍了如何在Ubuntu18下安装AX201驱动的教程。

九七的博客 8881

网口通信实战(C#完整版):基于TCP协议的工业仪表数据采集系统开发

工业现场中80%的智能仪表(压力/温度/液位/流量/数显仪表)、采集模块、测控终端均支持TCP网口通信,这类设备的TCP通信有鲜明的工业特性:基于字节流的自定义二进制协议、一问一答的主从通信模式、对数据完整性/稳定性要求极高。本次实战是纯工业级落地项目,基于C# WinForm + .NET Framework 4.8(工业上位机标配)✅纯原生无依赖:零第三方类库/控件,仅用C#原生,源码可100%复用、无引用冲突、工控机完美兼容;✅双采集模式完美适配:同时实现「单次手动采集」+「连续自动采集」

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1802

零基础学python day04 进制和编码

零基础学python day04 进制和编码1.python代码的运行方式2.进制2.1进制转换3.计算机中的单位4.编码4.1ascii编码4.2 gb-2312编码4.3 unicode4.4 utf-8编码4.5 python相关的编码 1.python代码的运行方式 脚本式 交互式 2.进制 计算机中底层所有数据都是以01010的形式存在 2.1进制转换 25 bin(25) 十进制转换为二进制 “0b11001” 字符串形式存在 oct(25) 十进制转换为八进制 “0o27” 字符串形式存

shuijiao11a的博客 354

学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真

本文详细介绍了使用Simulink实现四开关Buck-Boost(FSBB)变换器无缝模式切换的仿真方法。FSBB变换器因其输入输出同极性、单电感和双向能量流特性,广泛应用于光伏储能、USB-PD和车载电源等场景。文章重点解决了模式切换中的直通风险和占空比跳变问题,通过统一电压PI控制、Stateflow模式仲裁和200ns死区设计,实现了Buck(26V→24V)、Pass-Through(24V±1V)和Boost(22V)三种工作模式的无缝过渡。仿真结果显示输出电压稳定在12V±0.15V,切换过程无

amy_mhd的博客 66

Python基础笔记-进制和编码

Python基础-进制和编码

零源的博客 732

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

三、python基础22年_关于二进制、ASCII码编码整理_2025-2-8

从ANSI,GBK,十六进制UTF-8的一些历史

weixin_39534232的博客 149

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python基础知识1:print函数,转义字符,二进制,字符编码的相关知识

简单讲了有关print()函数,转义字符(反斜杠\的用法),原字符,二进制和字符编码的知识

qq_67993988的博客 1292

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python基础09—Python的字符编码与进制(2022年)

文章目录1. 进制1.1 二进制1.2 十六进制2. 编码2.1 ASCII码2.2 GB2312 & GBK2.3 UTF-82.4 常用编码介绍一览表 1. 进制 1.1 二进制 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的都是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“

weixin_44625708的博客 510

Python基础 二进制和字符编码

二进制定义   二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。 二进制与十进制转换   我们已经发现,二...

weixin_30919429的博客 398

Python基础(03字符串格式化&运算符&进制&编码)

汉字,用gbk编码需要用2个字节;用utf-8编码需要用3个字节。B(byte),字节。

weixin_45213849的博客 356

Python编码与解码十六进制数字完全指南:从基础到高级应用

Python编码与解码十六进制数字完全指南:从基础到高级应用

KE17RS的博客 1046

python基础2---进制和字符编码、标识符和保留字

python笔记1、二进制和字符编码1.1 二进制1.2 单位公式换算1.3 计算机为什么能认识你的代码2、python中的标识符和保留字2.1 保留字2.2 标识符 1、二进制和字符编码 1.1 二进制 机器可识别的:0、1 其它的状态补位数,二进制1个字节是8个位 最小单位是位(bit) 8个位数可以表示28=256种状态(符号) 1.2 单位公式换算 8bit(位,比特)=1Byte(字节) 1024Byte=1KB(千字节);1KB=8Kb 1024KB=1MB(兆字节);1MB=8Mb 102

wifi612的博客 395

python基础-----二进制编码

python基础-----二进制代码

qq_64470623的博客 447

Day 2 Python基础之字符编码与二进制

字符编码与二进制 转载于:https://www.cnblogs.com/MeiCheng/p/10825018.html

weixin_33725722的博客 85

第一章 Python基础入门之ASCII(字符编码和二进制)

Python系列学习

boranyueshijie的博客 1312

python基础复习(15)--二进制文件读写,GBk编码读写文件

#GBk编码读写文件 def writeFileA(): fobj=open("./t.txt","wb") fobj.write("abc中国".encode("gbk"))#将gbk转为2进制 fobj.close() def writeFileB(): fobj=open("./t1.txt","wt") fobj.write("abc中国") fobj.close() def readFile(filename): fobj=open(fil

xt18971492243的博客 802

python基础第二课(二进制与字符编码)

二进制与字符编码位ASCII表字符编码 位 8bit(位) = 1byte(字节) 1024byte = 1kb (千字节) 1024kb = 1mb (兆字节) 1024mb = 1gb 1024gb = 1tb (太字节) ASCII表 字符编码 GB2312 : 80后, 可以表示简体中文的字符集, 可以表示7445个字符 GBK : 90后, 不仅可以表示简体中文, 还可以表示繁体中文 GB18030 : 00后, 可以表示27484个字符, 不仅可以表示简体中文,繁体中文, 还可以表示藏

qq_33962481的博客 234
上一篇: Python的基础语法知识:循环语句、字符串格式化、运算符的优先级
下一篇: Python整型、bool类型及字符串的方法
Akzeptieren
博客等级 码龄8年 65粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值