bytes数据类型,三元运算,进制互换

东大网管 东大网管     2022-09-14     259

关键词:

三元运算

如果这个条件成立就存这个值,如果那个条件成立就存那个值。

进制

bytes类型,字节数据类型也就是二进制类型,这个是python3专有数据类型,在python2里跟字符串是一个类型,也就是python2是不区分这个数据类型的

比如说音频,视频文件都是二进制类型,也就是bytes类型。(python3通过socket在网络上传输数据时必须要用二进制格式,python2没有强制必须是二进制,字符串也可以

Python3中最大的新特性就是对文本和二进制数据做了更清晰的区分。文本通常是Unicode字符集,并且用str字符串类型表示,而二进制数据用bytes字节类型表示。在Python3中,字符串str和字节bytes是不可以混合使用的,这也使得二者之间更以区分。你不能将字符串和字节连接起来,不能在字符串中得到字节,也不能在字节中得到字符串,也不能通过函数传参字符串以期望得到字节,反之亦然。

py3里,只有 unicode编码格式 的字节串才能叫作str
其他编码格式的统统都叫bytes,如:gbkutf-8gb2312…………

这些bytes要转换为 unicode编码 才能当作str来用,就需要知道 bytes 的编码格式。
如果你事先知道,比如gbk,就可以用 bytes.decode('gbk')将bytes解码为unicode字符。
如果很不幸,你有一堆bytes,不知道它们的编码(例如 网站服务器返回的响应体),
这时候,你就需要chardet 来测试它们的编码。

 

字符串和字节间是由区别的,下面的关系应该牢记在心:

字符串可被编码为字节,字节可被解码为字符串

可以这样考虑,字符串是文本的一种抽象表示。一个字符串有很多字符组成,字符是与任何特定二进制表示无关的抽象实体。处理字符串时,可以对其进行分割、切片、连接、搜索操作。我们不关心字符串在内部是如何被表示的,也不关心它用几个字节来表示每个字符。只有在将字符串编码成字节(如用于通信信道的传输)或将字节解码成字符串时,才考虑这些问题。

编码可以将抽象字符以二进制数据的形式表示,有很多编码方法,如utf-8。编码是传输过程中非常重要的一部分,没有编码,字节对象只是一簇二进制位。是编码让位有意义。对位进行不同编码可获得不同结果。

string 通过encode 编码成 bytes 类型,而bytes格式的数据又可以通过decode来解码成str类型。
 
encode 用来对string格式个数据进行编码:
str = '你好'
str.encode('UTF-8') -->表示源数据是什么格式的,为UTF-8,非常重要一定要填写!!!虽然默认为utf-8,请一定要填写!python2默认使用系统的编码acsii
b'\xe4\xbd\xa0\xe5\xa5\xbd'

 

decode 用来对bytes格式的数据进行解码:
str = b'\xe4\xbd\xa0\xe5\xa5\xbd'
str.decode('UTF-8') -->表示把二进制数据解释成 什么格式的数据(默认UTF-8),非常重要一定要填写!!!

str.encode("UTF-8")
str.encode(encoding='UTF-8') 
str.decode("UTF-8")
str.decode(encoding='UTF-8') 
这两个编码的写法是一样的
 
saysay='我爱北京天安门'
print(saysay)
print(saysay.encode(encoding='utf-8'))
print(saysay.encode(encoding='utf-8').decode(encoding='utf-8'))

 

注意了,由于在网络编程里传输必须是byte类型,那么如果你传输的是英文字母或者数字的话,下面的三种写法都是一样的:

aaa="abc123".encode("UTF-8")
aaa="abc123".encode(encoding='UTF-8') 
aaa=b"abc123"
但是如果你的字符串是中文的话,那么必须写成:
aaa="大家好".encode("UTF-8")
aaa="大家好".encode(encoding='UTF-8') 
而aaa=b"大家好"是非法的
 
也就是ASCII码是可以前面直接加b来表示byte类型的,但是非ASCII码的就不可以这样了。
 
 
 

2-5(代码片段)

...示H后缀0X前缀‘‘‘print(0X53)print(0x53)‘‘‘bytes类型字节数据类型python3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是unicode,由str类型表示二进制数据则由bytes类型表示字符串->bytes类型,encodebytes... 查看详情

语法(代码片段)

...关键字,标识符进制二进制0B/0b八进制0十六进制0X/0x开头数据类型long类型后面要加L/lfloat类型后面要加F/flonga=23112879182738179L;floatb=678.08f;表达式的自动类型转换强制类型转换数据类型变量2=(数据变量)变量1、数据inta=20;byteb=(byte)a... 查看详情

三元运算符(代码片段)

三元运算符需要三个数据才可以进行操作的运算符格式:数据类型变量名=布尔类型表达式?结果1:结果2三元运算符计算方式:布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。布尔类型表达式结果是false... 查看详情

三元运算符(代码片段)

三元运算符:格式:数据类型变量名=布尔类型表达式?结果1:结果2三元运算符计算方式:布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值... 查看详情

java数据类型与运算符

Java基本数据类型Java的两大数据类型:内置数据类型引用数据类型内置数据类型Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。byte:byte数据类型是8位、有符号的,以... 查看详情

韩顺平循序渐进学java零基础

...第03章变量变量原理变量概念变量入门变量细节加号使用数据类型整型使用整型细节浮点数使用浮点数细节1浮点数细节2Java文档字符型使用字符型细节字符型本质常用编码布尔类型自动类型转换基础自动类型转换基础细节1自动类... 查看详情

pyd7-数据类型set三元运算函数

1、setset集合,是一个无序且不重复的元素集合classset(object):"""set()->newemptysetobjectset(iterable)->newsetobjectBuildanunorderedcollectionofuniqueelements."""defadd(self,*args,**kwargs):#realsignatureunknown""" 查看详情

学习笔记1(三元运算深浅拷贝动态参数全局变量与局部变量set数据类型)

...元运算、深浅拷贝、动态参数、全局变量与局部变量、set数据类型)set数据类型--无序,不重复的集合一.三元运算、三木运算--减少代码量name=“X1”if条件else“x2”例子:name="alsx" if1==1else"e"二.深拷贝与浅拷贝:深拷贝拷贝所... 查看详情

java培训_三元运算符最终结果的数据类型

3.三目运算:三元表达式 条件?结果1:结果2 a>b?a:b//如果a>b成立,结果为a,否则结果为ba和b到底以何种类型输出:publicclassTask{ publicstaticvoidmain(String[]args){ chara=‘b‘; int b=8; System.out.println(false?a:b);//8 Sys 查看详情

java中byte类型的介绍。谢谢

Java也提供了一个byte数据类型,并且是基本类型。javabyte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signedbyte。byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机... 查看详情

java三元运算

一、格式:数据类型变量名称=条件判断?表达式a:表达式b;二、注意:1、不是打印操作时,需要三元运算的右则2、表达式a和表达式b的值,必须要和变量名称的数据类型相等貌似和C的三元运算一样(忘记了)例子:publicclasstest{publi... 查看详情

三元运算符(代码片段)

...是一个简单的if条件判断语句 格式:1/*2*语法格式:3数据类型变量名称=(条件表达式)?表达式1:表达式2;4三元运算符运算规则:5先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2。6*/7pub... 查看详情

为啥使用三元运算符进行数组初始化是非法的?

】为啥使用三元运算符进行数组初始化是非法的?【英文标题】:Whyisarrayinitializationwithternaryoperatorillegal?为什么使用三元运算符进行数组初始化是非法的?【发布时间】:2019-06-2223:17:59【问题描述】:C让我可以经常互换使用char... 查看详情

关于三元运算符的数据类型转换问题(代码片段)

今天做题时遇到这么一道题;大意了,做题时它显示的是多选题,…然后正确结果是D题目来源:[牛客网]原题,算运行结果publicstaticvoidmain(String[]args)Objecto1=true?newInteger(1):newDouble(2.0);Objecto2;if(true)o2=newInteger(1);elseo2=newDouble( 查看详情

java控制流

目录1、引用数据类型2、流程控制语句2.1条件控制语句if2.2if语句与三元运算符的互换2.3循环语句2.4循环嵌套2.5跳转语句2.6选择结构switch3、猜数字案例1、引用数据类型Scanner类Scanner类属于引用数据类型;格式:数据类型变量名=new... 查看详情

python第二章二进制运算字符编码数据类型

>>>len(s.ljust(50,‘*‘))50>>>1.二进制转换:  bin(342)  ‘0b101010110‘2.ASCII码与二进制:  每一个ASCII码都是用8位表示,ASCII码一共有255个。每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位,... 查看详情

入门知识拾遗

一、bytes类型 二、三元运算1result = 值1 if 条件 else 值2如果条件为真:result=值1如果条件为假:result=值2三、进制二进制,01八进制,01234567十进制,0123456789十六进制,0123456789ABCDEF 二进制到16进制转换... 查看详情

汇编笔记一计算机数据宽度与逻辑运算

...义  由N个符号组成,满N则向上进位1. 二、常用的数据类型  1BYTE(字节)=8BIT(位)  1WORD(字)=2BYTE(字节)=16BIT(位)  1DWORD(双字)=2WORD(字)=4BYTE(字节)=32BIT(位) 三、二进制的逻辑运算符  A、逻辑运算符or(中文名:或运算C... 查看详情