计算机编码

TypeError: a bytes-like object is required, not 'str'--引申出bytes和str类型详细说明

て烟熏妆下的殇ゞ 提交于 2020-03-17 22:55:04
####本篇文章摘录了Chown-Jane-Y 和 singularity的文章#### TypeError: a bytes-like object is required, not 'str' 问题分析 该问题主要是由于当前操作的字符串是bytes类型的字符串对象,并对该bytes类型的字符串对象进行按照str类型的操作。 如下面图所示,s 为bytes类型字符串对象。 当对s进行按照str类型的操作(split)时,会弹出一下错误提示。因为split函数传入的参数是str类型的字符串,而党鞭的s为bytes编码类型的字符串对象 解决方法 此时的解决办法是,将s转码成为str类型的或者是将对s进行str类型操作转化为对bytes类型的操作。 方法1:bytes-->str 方法2:对s进行str类型操作转化为对bytes类型的操作 由于split里面用到分解字符串中的是空格‘ ’,但是该‘ ’是按照str编码的,需要转化成为bytes类型的,然后再直接对s进行对bytes类型的操作。 str和bytes类型之间的常用转码方式: 1、str to bytes:(3种方式) 2、bytes to str (3种方式) Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是 Unicode ,由 str 类型表示

【2020Python修炼记13】Python语法入门—字符编码

夙愿已清 提交于 2020-03-12 19:06:12
一、知识储备 1、三大核心硬件——CPU,内存,硬盘 所有软件都是运行硬件之上的,与运行软件相关的三大核心硬件为cpu、内存、硬盘 #1、软件运行前,软件的代码及其相关数据都是存放于硬盘中的 #2、任何软件的启动都是将数据从硬盘中读入内存,然后cpu从内存中取出指令并执行 #3、软件运行过程中产生的数据最先都是存放于内存中的,若想永久保存软件产生的数据,则需要将数据由内存写入硬盘 2、文本编辑器读取文件内容的流程 #阶段1、启动一个文件编辑器(文本编辑器如nodepad++,pycharm,word) #阶段2、文件编辑器会将文件内容从硬盘读入内存 #阶段3、文本编辑器会将刚刚读入内存中的内容显示到屏幕上 3、Python解释器执行文件的流程 以python test.py为例,执行流程如下: #阶段1、启动python解释器,此时就相当于启动了一个文本编辑器 #阶段2、python解释器相当于文本编辑器,从硬盘上将test.py的内容读入到内存中 #阶段3、python解释器解释执行刚刚读入的内存的内容,开始识别python语法 4、总结—Python解释器&文本编辑器的异同 #1、相同点: 前两个阶段二者完全一致,都是将硬盘中文件的内容读入内存,详解如下 python解释器是解释执行文件内容的,因而python解释器具备读py文件的功能,这一点与文本编辑器一样 #2、不同点:

计算机组成和体系结构Day03:计算机的数据表示

孤街浪徒 提交于 2020-03-12 07:20:16
第二章 计算机的数据表示 目录 第二章 计算机的数据表示 0x00 数据编码的概念 0x01 数值数据的编码 (1)定点数的存储形式:小数点固定的数 (2)浮点数的编码表示: 非标准浮点数的表示: <1>浮点数尾数的规格化: <3>n位浮点数的表示范围: <4> IEEE754标准浮点数的表示: 0x00 数据编码的概念 数据是计算机处理的对象 分类: 数值数据 非数值数据 数据必须经过编码才能被计算,处理,存储,传输 编码是采用少量 基本符号(0,1) 规定一系列组合 规则 来表示大量复杂的信息。 基本符号: 位:bit 最基本的存储单元 位运算:与& 或| 非^ 异或 思想: 两个数相加求全集,全集中减去自己就是对方。 异或可以理解为二进制加法。 自己异或自己=0 问题: 第一种如果两个地址相同就完蛋了 第二种如果两个数相等就完蛋了 字节:8bit int x = 0x ff 11 22 小端系统:数值高位 放在 内存地址高位 数值地位放在 内存地址低位 大端系统:正好相反 字:2个字节或者4个字节 作业5.14 (2) 3 (3) 大端系统: 0x01 数值数据的编码 (1)定点数的存储形式:小数点固定的数 分为纯整数和纯小数 如果将小数点约定到最低位之后,那就是纯整数 并且如果约定最高为表示符号,可以表示正负。 如果没有约定最高位表示符号,则只能表示正

深入理解Python字符编码

社会主义新天地 提交于 2020-03-07 12:45:24
不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError、UnicodeDecodeError 错误,每当遇到错误我们就拿着 encode、decode 函数翻来覆去的转换,有时试着试着问题就解决了,有时候怎么试都没辙,只有借用 Google 大神帮忙,但似乎很少去关心问题的本质是什么,下次遇到类似的问题重蹈覆辙,那么你有没有想过一次性彻底把 Python 字符编码给搞懂呢? 完全理解字符编码 与 Python 的渊源前,我们有必要把一些基础概念弄清楚,虽然有些概念我们每天都在接触甚至在使用它,但并不一定真正理解它。比如:字节、字符、字符集、字符码、字符编码。 字节 字节(Byte)是计算机中数据存储的基本单元,一字节等于一个8位的比特,计算机中的所有数据,不论是保存在磁盘文件上的还是网络上传输的数据(文字、图片、视频、音频文件)都是由字节组成的。 字符 你正在阅读的这篇文章就是由很多个字符(Character)构成的,字符一个信息单位,它是各种文字和符号的统称,比如一个英文字母是一个字符,一个汉字是一个字符,一个标点符号也是一个字符。 字符集 字符集(Character Set)就是某个范围内字符的集合,不同的字符集规定了字符的个数,比如 ASCII 字符集总共有128个字符,包含了英文字母、阿拉伯数字

深入理解计算机系统cp1:存储单位与编码

喜欢而已 提交于 2020-03-05 16:03:30
摘要: 理解计算机是如何存储数据的。 原文: 深入理解计算机系统cp1:存储单位与编码 作者: Chor Fundebug 经授权转载,版权归原作者所有。 1. 存储单位 位:即 bit,表示二进制位,要么是 0 ,要么是 1。它是计算机内部数据存储的最小单位。比如 11010100 共有8个二进制位,是一个8位二进制数。 字节:即 byte,它由8个二进制位构成,即 1byte=8bit,是计算机内部计量的基本单位。一个英文字符占1个字节(8位),一个汉字占2个字节(16位) 字:即word,它由若干个字节构成,是计算机内部进行数据处理和运算的基本单位。字的总的位数称为字长,不同档次的计算机字长是不一样的,比如32位机,它的1个字由4个字节构成,字长为32位,也就是说其CPU一次操作处理的实际位数是32位。同理,64位机可以处理64位。由此可见,计算机的字长越大,其性能越优越。 KB,MB:1024byte = 1KB,1024KB = 1MB。往上还有GB,TB。 PS:数据传输大多以 bit 为单位,比如我们常说的网速100M/s,M/s其实Mbit/s,也就是兆比特每秒,我们还可以写成100Mbps。 2. 编码 2.1 为什么需要编码? 计算机只能理解0和1,无法理解英文、字母、汉字和其他特殊字符,这些字符需要经过编码才能成为计算机可以理解的二进制数。

深入理解计算机系统cp1:存储单位与编码

我怕爱的太早我们不能终老 提交于 2020-03-01 23:54:58
摘要: 理解计算机是如何存储数据的。 原文: 深入理解计算机系统cp1:存储单位与编码 作者: Chor Fundebug 经授权转载,版权归原作者所有。 1. 存储单位 位:即 bit,表示二进制位,要么是 0 ,要么是 1。它是计算机内部数据存储的最小单位。比如 11010100 共有8个二进制位,是一个8位二进制数。 字节:即 byte,它由8个二进制位构成,即 1byte=8bit,是计算机内部计量的基本单位。一个英文字符占1个字节(8位),一个汉字占2个字节(16位) 字:即word,它由若干个字节构成,是计算机内部进行数据处理和运算的基本单位。字的总的位数称为字长,不同档次的计算机字长是不一样的,比如32位机,它的1个字由4个字节构成,字长为32位,也就是说其CPU一次操作处理的实际位数是32位。同理,64位机可以处理64位。由此可见,计算机的字长越大,其性能越优越。 KB,MB:1024byte = 1KB,1024KB = 1MB。往上还有GB,TB。 PS:数据传输大多以 bit 为单位,比如我们常说的网速100M/s,M/s其实Mbit/s,也就是兆比特每秒,我们还可以写成100Mbps。 2. 编码 2.1 为什么需要编码? 计算机只能理解0和1,无法理解英文、字母、汉字和其他特殊字符,这些字符需要经过编码才能成为计算机可以理解的二进制数。

python字符串编码

浪尽此生 提交于 2020-02-18 07:03:15
python 默认编码   python 2.x 默认的字符编码是 ASCII ,默认的文件编码也是 ASCII 。   python 3.x 默认的字符编码是 unicode ,默认的文件编码是 utf-8 。 中文乱码 问题   无论以什么编码在内存里显示字符,存到硬盘上都是 二 进制,所以编码不对,程序就会出错。   常见编码有 ascii 编码(美国), GBK 编码(中国), shift_JIS 编码(日本 ), unicode (统一编码)等。   需 要注意的是,存到硬盘上时是以何种编码存的,再从硬盘上读出来时,就必须以何种编码读,要不然就 会出现乱码问题 。   常见的编码错误的原因有 如下,出现乱码时,按照编码之前的关系,挨个排错就能解决问题。      python 解释器的默认编码 ;      Terminal 使用的编码 ;      python 源文件文件编码 ;     操作系统的语言设置 。   Python 支持中文的编码: utf-8 、 gbk 和 gb2312 。 uft-8 为 国际通用 , 常用有数据库、编写代码 。 gbk 如 windows 的 cmd 使用 。 编码转换   如果想要中国的软件可以正常的在美国人的电脑上实现,有下面两种方法:    让美国人的电脑都装上 gbk 编码    让你的软件编码以 utf-8 编码   

2月书单 《编码隐匿在计算机软硬件背后的语言》 17-20章

左心房为你撑大大i 提交于 2020-02-17 09:44:57
第17章 自动操作 人类是非常富于创造性而且是十分勤勉的,但是,人类在本质上也是十分懒惰的。非常明显,人类并不愿意去工作,这种对工作的反感导致人们用大量的时间来设计和制造可以把工作日缩短到几分钟的设备。幻想使人感到兴奋,甚至远比我们所看到新奇的事物更令人兴 奋得多。 享乐 ——锁定技,当你成为一名角色使用【杀】的目标后,除非该角色弃置一张基本牌,否则此【杀】对你无效。 本章将通过设计更精密的机器,使加减法运算更加自动化。 我们知道,人是很懒惰的,尤其讨厌做重复又无聊的任务,于是我们想外包给机器来帮我们完成无聊的累加。 设想一下,如果想把1 0 0个二进制数加起来,你就得坐在加法机前耐着性子输入每一个数字并累加起来。当你完成时,却发现有两个数字是输入错误的,你只好又重复全部的工作。但是如果我们先将数据存入RAM,再由CPU将数据进行运算,这样的话,数据修改就会方便得多。下图就是一个可行的模型。 但是这种电路也有很多问题:1.当计数器最终到达F F F F h时,它又会翻到0 0 0 0 h(就像汽车里程表)2.它只能用于加法,并且只能加8位数。 之后介绍了存储器与运算器的简单协同工作,以及初步介绍了汇编代码,比较简单,不予赘述。 第18章从算盘到芯片 纵观历史,人类发明了很多灵巧的工具和机器以满足广泛的需求,从而使数学运算变得更容易了些。虽然人类天生就有使用数字的能力

计算机编码

强颜欢笑 提交于 2020-02-12 05:29:52
ASCII码 可以先让学生看图片,然后再介绍ascii码 假如我们就已经有这么一张表了 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于 拉丁字母 的一套电脑编码系统,主要用于显示现代 英语 和其他 西欧 语言。它是现今最通用的单字节编码系统,并等同于 国际 标准ISO/IEC 646。 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为 ASCII 编码,比如大写字母 A 的编码是 65 ,小写字母 z 的编码是 122 。后128个称为 扩展ASCII 码。 那现在我们就知道了上面的字母符号和数字对应的表是早就存在的。那么根据现在有的一些十进制,我们就可以转换成二进制的编码串。 比如 一个空格对应的数字是0 翻译成二进制就是0(注意字符'0'和整数0是不同的) 一个对勾√对应的数字是251 翻译成二进制就是11111011 提问:假如我们要打印两个空格一个对勾 写作二进制就应该是 0011111011, 但是问题来了,我们怎么知道从哪儿到哪儿是一个字符呢? 论断句的重要性与必要性: 上次在网上看到个新闻,讲是个小偷在上海被捕时高喊道:“我一定要当上海贼王!” 正是由于这些字符串长的长,短的短

Python-基础-day6

孤人 提交于 2020-02-12 05:29:11
1、二进制 前言:计算机一共就能做两件事:计算和通信 2、字符编码 生活中的数字要想让计算机理解就必须转换成二进制。十进制到二进制的转换只能解决计算机理解数字的问题,那么文字要怎么让计算机理解呢? 于是我们就选择了一种方式,既然数字可以转换成十进制,我们只要想办法吧文字,转换成数字,这样文字不就可以表示成二进制了么? 那么问题来了:怎么把文字转换成数字呢?就是强制转换 我们自己强行约定了一个表,把文字和数字对应上,这张表就相当于翻译,我们可以拿着一个数字来对比对应表找到相应的文字,反之亦然。 ASCII码 我们先来看一张图片,在了解ascii码 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于 拉丁字母 的一套电脑编码系统,主要用于显示现代 英语 和其他 西欧 语言。它是现今最通用的单字节编码系统,并等同于 国际 标准ISO/IEC 646。 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为 ASCII 编码,比如大写字母 A 的编码是 65 ,小写字母 z 的编码是 122 。后128个称为 扩展ASCII 码。 那现在我们就知道了上面的字母符号和数字对应的表是早就存在的。那么根据现在有的一些十进制