iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python常见类型转换有哪些
  • 791
分享到

Python常见类型转换有哪些

2023-07-05 04:07:52 791人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“python常见类型转换有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python常见类型转换有哪些”吧!一:常见类型的概念类型举例说明二进制a = 0b1010二

这篇文章主要讲解了“python常见类型转换有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python常见类型转换有哪些”吧!

一:常见类型的概念

类型举例说明
二进制a = 0b1010二进制以0b打头
八进制b = 0o2345八进制以0o打头(注意是字母的o)
十进制c = 500十进制没有前缀
十六进制d = 0x12ff十六进制以0x打头
字符串e = "ftz"字符串的内容用引号或双引号括住
字节f = b'f12345'字节以b修饰,内容用引号或双引号括住
bin十六进制g = b'\x18\x17\x25'报文中的码流存在形式

二:类型转换

1,二进制,八进制,十进制,十六进制转换

>>> var = 100>>> bin(var) #其他进制转二进制'0b1100100'>>> oct(var) #其他进制转八进制'0o144'>>> int(var) #其他进制转十进制100>>> hex(var) #其他进制转十六进制'0x64'>>>

2,数值字符串转换

>>> var = 100>>>>>> strNum = str(var) #数值转字符串>>> strNum'100'>>>>>> intNum = int(strNum) #字符串转数值>>> intNum100>>>

注意:字符串转数值常见,转换成功的前提是被转换的对象只有全是数字字符才可以,不然会报错如下所示,此场景的转换一般在转换前要对对象进行判断用字符串的方法isdigit()

>>> int('abc')Traceback (most recent call last):  File "<stdin>", line 1, in <module>ValueError: invalid literal for int() with base 10: 'abc'>>> 'abc'.isdigit()False>>> '124'.isdigit()True>>>

3,字符串和字节byte转换

解码的本质是选择二进制对应的图形,编码的本质是把字符图形转成相应编码的二进制。这只是一种显示的变化,在内存上并不一定有变化

>>> byteMyName = b'ftz'>>> strMyName = 'ftz'>>>>>> strMyName.encode() #字符串转byteb'ftz'>>> byteMyName.decode() #byte转字符串'ftz'

下面具体看下两个转换方法

decode方法有两个参数,encoding默认是用'utf-8'进行解码,errors默认用'strict'模式,如果需要一定的容错,则用'ignore'

 |  decode(self, /, encoding='utf-8', errors='strict') |      Decode the bytes using the codec reGIStered for encoding. | |      encoding |        The encoding with which to decode the bytes. |      errors |        The error handling scheme to use for the handling of decoding errors. |        The default is 'strict' meaning that decoding errors raise a |        UnicodeDecodeError. Other possible values are 'ignore' and 'replace' |        as well as any other name registered with codecs.register_error that |        can handle UnicodeDecodeErrors.

 decode() 方法的语法格式如下:

bytes.decode([encoding="utf-8"][,errors="strict"])

 decode() 方法用于将 bytes 类型的二进制数据转换为 str 类型,这个过程也称为“解码”

decode()参数及含义

参数含义
bytes表示要进行转换的二进制数据。
encoding="utf-8"指定解码时采用的字符编码,默认采用 utf-8 格式。当方法中只使用这一个参数时,可以省略“encoding=”,直接写编码方式即可。

注意,对 bytes 类型数据解码,要选择和当初编码时一样的格式。
errors = "strict"指定错误处理方式,其可选择值可以是:
  • strict:遇到非法字符就抛出异常。

  • ignore:忽略非法字符。

  • replace:用“?”替换非法字符。

  • xmlcharrefreplace:使用 xml 的字符引用。

该参数的默认值为 strict。

encode方法同样有两个参数,encoding默认是用'utf-8'编码进行转换

 |  encode(...) |      S.encode(encoding='utf-8', errors='strict') -> bytes | |      Encode S using the codec registered for encoding. Default encoding |      is 'utf-8'. errors may be given to set a different error |      handling scheme. Default is 'strict' meaning that encoding errors raise |      a UnicodeEncodeError. Other possible values are 'ignore', 'replace' and |      'xmlcharrefreplace' as well as any other name registered with |      codecs.register_error that can handle UnicodeEncodeErrors.

 encode() 方法的语法格式如下:

str.encode([encoding="utf-8"][,errors="strict"])

注意,格式中用 [] 括起来的参数为可选参数,也就是说,在使用此方法时,可以使用 [] 中的参数,也可以不使用。 

encode()参数及含义

参数含义
str表示要进行转换的字符串。
encoding = "utf-8"指定进行编码时采用的字符编码,该选项默认采用 utf-8 编码。例如,如果想使用简体中文,可以设置 gb2312。

当方法中只使用这一个参数时,可以省略前边的“encoding=”,直接写编码格式,例如 str.encode("UTF-8")。
errors = "strict"指定错误处理方式,其可选择值可以是:
  • strict:遇到非法字符就抛出异常。

  • ignore:忽略非法字符。

  • replace:用“?”替换非法字符。

  • xmlcharrefreplace:使用 xml 的字符引用。

该参数的默认值为 strict。

4,报文数据包和其他类型的互转

上面的都是铺垫,本节将是要重点介绍的内容。在用scapy构造报文或者编辑报文的过程中,常常需要从报文中提取我们感兴趣的内容或者将我们改造的数据插入到报文中。这里面就需要用到各种转换。最基本的操作就是将bin十六进制(报文中的数据,也称为码流)转int、转byte、转str。相反插入一段数据或者构造的数据到报文中,则是将int、byte、str类型转成bin十六进制。

Python常见类型转换有哪些

下面将对十六进制码流和int、byte、str互转进行定义

bin十六进制转int将二进制文件中的b“\x01\x79”转为“377”的过程。本质上讲,就是把一个byte型十六进制数,转成十进制数的过程。(注意区别:int(0x178)时参数0x179是16进制整型而b&rsquo;\x01\x79&rsquo;是byte数组)
int转bin十六进制将“377”转为二进制文件中的b“\x01\x79”的过程。本质上讲,就是把一个十进制数,转成byte型十六进制数的过程。(注意区别:hex(377)得到的0x179是16进制整型而b&rsquo;\x01\x79&rsquo;是byte数组)
bin十六进制转byte将二进制文件中的b“\x04\xf9\x38\xad\x13\x26”取为b&lsquo;04f9381326&rsquo;的过程。本质上讲,就是将每个十六进制数(4bit),转成一个采用ascii编码的byte(8bit)的过程
byte转bin十六进制将b&lsquo;04f9381326&rsquo;取为二进制文件中的b“\x04\xf9\x38\xad\x13\x26”的过程。本质上讲,就是将每个采用ascii编码的byte(8bit),转成一个十六进制数(4bit)的过程
bin十六进制转str将二进制文件中b&rsquo;\x48\x54\x54\x50&rsquo;取为字符串&lsquo;Http&rsquo;的过程。本质上讲,就是将ascii编码转成对应字符的过程。
str转bin十六进制将字符串&lsquo;HTTP&rsquo;取为二进制文件中b&rsquo;\x48\x54\x54\x50&rsquo;的过程。本质上讲,字符转成就是对应的ascii编码的过程
4.1 bin十六进制与int互转实现

        bin十六进制转int主要在分析二进制文件、数据包头时获取长度等值时使用;相反,int转bin十六进制就是在构造二进制文件、数据包头时写入长度等值时使用。

        另外注意把bin十六进制当数值时有大端和小端两种模式,大端意思是开头(低地址)权重大,小端为开头(低地址)权重小。文件系统一般用小端模式,网络传输一般用大端模式。

转换方法说明
int转bin十六进制to_bytes(lenght,byteorder)lenght表示转成的多少个字节;byteorder可为big或little分别表示转bin十六进制时使用大端模式还是小端模式
bin十六进制转intint.from_bytes(byte_var,byteorder)byte_var是要转成数值的变bin十六进制变量,byteorder还是一样可为big或little,分别表示从bin十六进制转为数值时把bin十六进制当大端模式还是小端模式处理

举例:

Python常见类型转换有哪些

将端口的对应的码流\xdc\x39转成56377

>>> int.from_bytes(b'\xdc\x39','big')56377>>>

将56377转成码流\xdc\x39

>>> port = 56377>>> byteFromInt = port.to_bytes(2,'big')>>> byteFromIntb'\xdc9'>>> byteFromInt == b'\xdc\x39'True

转出来为什么是\xdc9,我们查一下ascii码表,9对应的十六进制就是\x39

Python常见类型转换有哪些

4.2 bin十六进制和byte互转实现

bin十六进制转byte主要在分析二进制文件、数据包头时获取Mac地址、密钥等平时就以十六进制表示的值时使用;相反,byte转bin十六进制就是在构造二进制文件、数据包头时写入mac地址、密钥等平时就以十六进制表示的值时使用。这在用scapy构造数据包或者转换数据包时会经常用到,这里要用到第三方库binascii,使用时需要先导入

转换方法说明
bin十六进制转bytebinascii.b2a_hex(bin_var)bin_var为byte变量常从二进制文件中读出; 如binascii.b2a_hex(b&rsquo;\x04\xf9\x38\xad\x13\x26&rsquo;)结果为b&rsquo;04f9381326&lsquo;
byte转bin十六进制binascii.a2b_hex(hex_byte_var)hex_byte_var为十六进制字节串; 如binascii.a2b_hex(b&rsquo;04f9381326&rsquo;)结果为b&rsquo;\x04\xf98\x13&&rsquo;(8对应的ascii编码是38,&对应的ascii编码是26)

举例:

>>> import binascii>>> binascii.b2a_hex(b'\x48\x6f\x73\x74\x3a\x20\x63') #bin十六进制转byteb'486f73743a2063'>>>>>> binascii.a2b_hex(b'486f73743a2063') #byte转bin十六进制b'Host: c'>>>

实际使用中我们经常会构造十六进制码流,然后将码流格式化成byte型,最后将byte转成bin十六进制

Python常见类型转换有哪些

4.3 bin十六进制与str互转

bin十六进制转主要在分析二进制文件、数据包头时获取其量的字符串时使用;相反,byte转bin十六进制就是在构造二进制文件、数据包头时写入字符串时使用。

bin十六进制与str互转其实就是字符串和byte互转;此处的bin十六进制就是byte的本质。(b&rsquo;\x48\x54\x54\x50&rsquo;和b&rsquo;HTTP&rsquo;在内存中是一模一样的)

转换方法说明
bin十六进制转strdecode在第3节中有详细介绍
str转bin十六进制encode在第3节中有详细介绍

举例:

Python常见类型转换有哪些

>>> byteHost = b'\x48\x6f\x73\x74'>>>>>> byteHost.decode()'Host'>>>>>> str = 'Host'>>> str.encode()b'Host'>>>

感谢各位的阅读,以上就是“Python常见类型转换有哪些”的内容了,经过本文的学习后,相信大家对Python常见类型转换有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Python常见类型转换有哪些

本文链接: https://www.lsjlt.com/news/349580.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python常见类型转换有哪些
    这篇文章主要讲解了“Python常见类型转换有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python常见类型转换有哪些”吧!一:常见类型的概念类型举例说明二进制a = 0b1010二...
    99+
    2023-07-05
  • golang中常见的类型转换方法有哪些
    本篇内容介绍了“golang中常见的类型转换方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数字类型转换在Golang中,数字类型转...
    99+
    2023-07-05
  • Python常见类型转换的小结
    目录一:常见类型的概念二:类型转换1,二进制,八进制,十进制,十六进制转换2,数值字符串转换3,字符串和字节byte转换4,报文数据包和其他类型的互转4.1 bin十六进制...
    99+
    2023-02-21
    Python常见类型转换 Python 类型转换
  • Python常见的BUG类型有哪些
    今天小编给大家分享一下Python常见的BUG类型有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。错误类型 1:语法错误...
    99+
    2023-06-27
  • python常见报错类型有哪些
    Rate limit reached for gpt-3.5-turbo in organization org-68Lqb4iD2...
    99+
    2023-10-18
    python
  • python类型转换函数有哪些
    python中的类型转换函数:1.int()函数,将一个字符串或数字转换为整型;2.float()函数,将整数和字符串转换成浮点数;3.str()函数,将对象转化为字符串;python中常用的类型转换函数有以下几种int()函数int()函...
    99+
    2024-04-02
  • 常见证书类型转换
    常见证书格式转换 常见的证书类型转换 PFX转JKS 找到jdk路径,使用命令行工具 cmd到jdk的bin下 2.执行keytool命令 keytool -importkeystore -srcke...
    99+
    2023-09-18
    服务器 https 运维
  • TypeScript常见类型有哪些
    小编给大家分享一下TypeScript常见类型有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!常见类型(Everyday Types)类型可以出现在很多地方,...
    99+
    2023-06-29
  • python常见的文件类型有哪些
    python文件类型:1.py文件,python源代码文件,可在控制台中运行;2.pyc文件,无法查看源代码,执行速度快;3.pyo文件,适用于嵌入式系统;python中常见的文件类型有.py、.pyc和.pyo三种.py文件以.py作扩展...
    99+
    2024-04-02
  • python常见进制转换方法有哪些
    1. 标准进制转换其中比较常用到的是python的内置函数进行进制的转换,一般使用内置函数进行转换的时候是先将控制台输入的字符串或者是自定义的字符串先转换为10进制然后将10进制转换为其他的进制,常见的是二进制、十进制、八进制、十六进制之间...
    99+
    2023-05-14
    Python
  • java常见异常类型有哪些
    Java常见的异常类型包括:1. NullPointerException(空指针异常):当引用变量为null时,使用该变量进行操作...
    99+
    2023-09-27
    java
  • Python数据类型转换函数有哪些
    Python数据类型转换函数有:1、int()函数;2、float()函数;3、str()函数;4、list()函数;5、tuple()函数;6、dict()函数;7、set()函数;8、bytes()函数;9、complex()函数。详细...
    99+
    2023-12-12
    数据类型转换函数
  • Python数据类型转换方式有哪些
    这篇文章主要介绍“Python数据类型转换方式有哪些”,在日常操作中,相信很多人在Python数据类型转换方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python数据类型转换方式有哪些”的疑惑有所...
    99+
    2023-06-25
  • MySQL中有哪些常用的类型转换函数
    本篇文章为大家展示了MySQL中有哪些常用的类型转换函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、Concat函数。连接字符串常用:concat函数。如sq...
    99+
    2024-04-02
  • 常见Flex数据类型有哪些
    这篇文章主要介绍常见Flex数据类型有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Flex数据类型说明基元数据类型包括Boolean、int、Null、Number、String、uint和void。Actio...
    99+
    2023-06-17
  • 介绍常见的Python数据类型转换函数
    Python中常用的数据类型转换函数介绍 在Python编程语言中,数据类型转换是一项常见且重要的操作。通过数据类型转换,我们可以将一个数据对象从一种类型转换为另一种类型,使得我们能够更灵活地处理不同类型的数据。本文将介绍Pyt...
    99+
    2024-01-20
    str() float() int()
  • php类型转换函数有哪些
    在Web开发中,我们经常需要对不同的数据类型进行转换处理。比如将字符串转化为整数、浮点数,把日期转化为时间戳等。这些转化操作在PHP中都可以通过内置函数实现。本文将介绍PHP中常用的转化函数。一、整型转换函数intval(): 把一个变量转...
    99+
    2023-05-14
    php
  • C#数据类型转换有哪些
    本篇内容介绍了“C#数据类型转换有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C# 的类型转换有显式转型 和 隐式转型 两种方式。显式...
    99+
    2023-06-26
  • c#常见的数据类型有哪些
    c# 数据类型分为两种:值类型和引用类型。值类型直接存储数据,包括整型、浮点数、字符、布尔型和枚举。引用类型存储对堆中对象的引用,包括类、结构、数组、字符串、异常和接口。根据存储大小、性...
    99+
    2024-04-04
    c# 内存占用
  • mysql常见的优化类型有哪些
    这篇文章主要介绍“mysql常见的优化类型有哪些”,在日常操作中,相信很多人在mysql常见的优化类型有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql常见的优化类型有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作