关于python基础数据类型bytes进制转换

目录
  • 1. bytes字节串类型介绍:
  • 2. 二进制、十进制、十六进制之间的转换:
    • 2.1 二进制转十进制:
    • 2.2 二进制转十六进制:
    • 2.3 十进制转二进制:
    • 2.4 十进制转十六进制:
    • 2.5 十六进制转二进制:
    • 2.6 十六进制转十进制:
  • 3. 字节串和字符串之间的区别:
  • 4. 字节介绍:
  • 5. 字节串和字符串之间的转换:
    • 5.1   如果字符串内容都是 ASCII 字符,则可以通过直接在字符串之前添加b来构建字节串值。
    • 5.2 调用 bytes()函数(其实是bytes的构造方法)将字符串按指定字符集转换成字节串,
    • 5.3  调用字符串本身的encode()方法将字符串按指定字符集转换成字节串(常用) 如果不指定字符集,默认使用UTF-8 字符集。
  • 6. 将一个bytes对象转换成字符串(decode(“编码类型” ) ):
  • 7. 编 码:
  • 8. 开发过程中遇见乱码问题:

1. bytes字节串类型介绍:

定义一个字节串:
 	字面量:b=b"he1lo 你好"      [默认编码格式ASCII]
 	类型: b=bytes("字节内容",encoding= "utf-8")    [默认编码格式ASCII]

Python 3新增了bytes 类型,用于代表字节串,是一一个类型。

由于bytes保存的就是原始的字节(二进制格式)数据,因此bytes对象可用于在网络上传输数据,也可用于存储各种二进制格式的文件,比如图片、音乐等文件。

2. 二进制、十进制、十六进制之间的转换:

二进制:
010101, 是电脑识别的一种格式数据
python解析器,帮助我们把我们输入的python语言解析成二进制的数据,供计算机所识别。
例如:如果我们定义的是十进制,十六进制,等语言,需要先转成二进制后,计算机在进行执行。进行数据传递的过程中如果使用二进制进行数据传递的话执行速度会很快

2.1 二进制转十进制:

把二进制数按权展开、相加即得十进制数

2.2 二进制转十六进制:

十六进制是取四合一。 (注意:四位二进制转成十六进制是从右到左开始转换,不足时补零)

2.3 十进制转二进制:

十进制数除二取余法,即十进制数除二,余数为权位上的数,得到的商值继续除以二,依次步骤继续向下运算直到商为零为止

2.4 十进制转十六进制:

间接法:把十进制转成二进制,然后再由二进制转成十六进制

2.5 十六进制转二进制:

十六进制数通过除2取余法,得到二进制数,对每一个十六进制为四个二进制,不足时在最左边补零

2.6 十六进制转十进制:

把十六进制数按权展开,相加即得十进制数

3. 字节串和字符串之间的区别:

bytes和str 除操作的数据单元不同之外,它们支持的所有方法都基本相同,bytes也是不可变序列。
字符串(str) 由多个字符组成,以字符为单位进行操作;
字节串(bytes) 由多个字节组成,以字节为单位进行操作。

4. 字节介绍:

计算机底层有两个基本概念:位(bit) 和字节(Byte) ,其中
		bit代表1位,要么是0,要么是1;
		Byte代表1字节,1字节包含8位二进制。
定义一个字节串:“123” 里面有三个字节, 每一个字节由8位二进制构成。两个十六进制组成
				每4位二进制可以用一个十六进制数表示。(一个字节需要两个十六进制的数)每四位相当于4位二进制数。

b’\xe6\x88\x91 \xe7\x88 \xb1Python\xe7\xbc \x96\xe7\xa8\x8b’,
比如: \xe6 就表示1字节,其中\x表示十六进制,e6就是两位的十六进制数。

5. 字节串和字符串之间的转换:

5.1   如果字符串内容都是 ASCII 字符,则可以通过直接在字符串之前添加b来构建字节串值。

 b=b"he1lo"
        print (b)
        # 输出: b"he1lo"

5.2 调用 bytes()函数(其实是bytes的构造方法)将字符串按指定字符集转换成字节串,

    b=bytes("字节内容v,encoding= "utf-8") [默认编码格式ASCII]
        b=bytes("he111o字节内容",encoding="utf-8" )
        print (b)
        # 输出: b' he11lo\xe5\xad\x97\xe8\x8a^ \x82\xe5 \x86\x85\xe5\xae \xb9'

5.3  调用字符串本身的encode()方法将字符串按指定字符集转换成字节串(常用) 如果不指定字符集,默认使用UTF-8 字符集。

   str="nihao你好"
        b=str. encode("utf-8")
        print (b)
        #输出: b' nihao\xe4\xbd\xa0\xe5\xa5\xbd'|

6. 将一个bytes对象转换成字符串(decode(“编码类型” ) ):

str="nihao你好"
	b=str. encode("utf-8")
	str1=b. decode("utf-8" )
	print (str1)
	# 输出:nihao你好

7. 编 码:

Unicode字符集,包括汉字,为两个字节(6位,支持6536个字符编号)。实际使用的UTF-8, UTF-16 GeBK GB2312等其实都属于Unicode字符集。
ASCII码:是用一个字节(8bit 0-255) 中的127个字母表示大小写字母,数字和一些键盘 上有的符号。其余的例如汉字等不能被表示。
为了统各国的编码,减少乱码, 诞生了Unicode, 把所有编码统-到- 套编码中。
为了节约位置以及效率低下等问题。出现了把Unicde编码转化为“可变长编码”的UTF- 8编码。
UTF-8编码(针对中文) .把-一个Cide字符根据不同的数字大小编码成4-6个字节,常用的英文祖母被编码成了1个字节,汉字是3个字节,只有特别偏僻的字才会被编码成4-6个字节.
如果需要传输的文本包含大量的英文字符,UTF-8就能节省空间。(ASCII码可以看成是UTF-8的一 部分, 所以大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作)
GBK:只识别中文

8. 开发过程中遇见乱码问题:

  • 你自己创建的文件书写了一些文字保存之后发现乱码考虑编码的问题编码改为utf-8
  • 数据传递的时候

python端开发的时候C语言项目c----python端传递数据接收到的数据中文乱码了
需要判断
C语言那边数据是不是用utf-8编码和你接收数据的时候是不是也是通过utf-8

到此这篇关于关于python基础数据类型bytes进制转换的文章就介绍到这了,更多相关python bytes数据类型进制转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python使用StringIO和BytesIO读写内存数据

    流读写 很多时候,数据读写不一定是文件,也可以在内存中读写. 1.StringIO:在内存中读写str. 要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可: getvalue()方法用于获得写入后的str. from io import StringIO f = StringIO() f.write('hello') f.write(' ') f.write('world!') print(f.getvalue()) #hello world! 要读取

  • Python3中的bytes类型和str类型

    目录 前言: 编码发展的历史 bytes和str之间的异同 前言: Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然). 下面让我们深入分析一下二者的区别和联系. 编码发展的历史 在谈bytes和str之前,需要先说说关于编码

  • Python内建类型bytes深入理解

    目录 引言 1 bytes和str之间的关系 2 bytes对象的结构:PyBytesObject 3 bytes对象的行为 3.1 PyBytes_Type 3.2 bytes_as_sequence 4 字符缓冲池 引言 “深入认识Python内建类型”这部分的内容会从源码角度为大家介绍Python中各种常用的内建类型. 在我们日常的开发中,str是很常用的一个内建类型,与之相关的我们比较少接触的就是bytes,这里先为大家介绍一下bytes相关的知识点,下一篇博客再详细介绍str的相关内容

  • Python字节串类型bytes及用法

    一.bytes 字节串类型概述 Python 3 新增了 bytes 类型,用于代表字节串,是一个类型,不是C#中的列表. 由于 bytes 保存的就是原始的字节(二进制格式)数据,因此 bytes 对象可用于在网络上传输数据,也可用于存储各种二进制格式的文件,比如图片.音乐等文件. 1.字节串与字符串之间的区别 bytes 和 str 除操作的数据单元不同之外,它们支持的所有方法都基本相同,bytes 也是不可变序列. 字符串(str)由多个字符组成,以字符为单位进行操作: 字节串(bytes

  • Python中bytes和str的区别与联系详解

    目录 Bytes和Str的区别 Bytes与Str间的转换 读写文件的注意事项 总结 Bytes和Str的区别 在Python3中,字符序列有两种类型:bytes和str.bytes类型是无符号的8位值(通常以ASCII码显式),而str类型是Unicode代码点(code point).代码点指编码字符集中,字符所对应的数字. a = b'hello world' print(isinstance(a, bytes)) print(list(a)) print(a) """

  • 详解Python数据类型、进制转换、字符串格式化的问题

    目录 1. 整数.浮点数和复数 浮点数 Decimal 复数 2.进制转换 进制数字类型 整型进制操作 3. 字符串 3.1 转义字符 3.2 字符串取值 4. 字符串运算与转换 5. 字符串的常用方法 判断系列 查找统计系列 字符串转换类 +和join的效率问题 6 . 字符串格式化 %格式化 format格式化 f格式化 练习 7. 字符串拼接 1. 整数.浮点数和复数 Python2中区分整型int.长整型longPython3中只有统称为 整型int 浮点数 即带有小数点的数字,因为浮点

  • 基于Python制作一个多进制转换工具

    目录 前言 主要步骤 完整代码 前言 学习资料下载链接 提取码:tha8  进制转换计算工具含源文件 主要步骤 导入模块 import tkinter from tkinter import * import tkinter as tk from tkinter.ttk import * 整个框架的主结构 root = Tk() root.title('贱工坊-进制转换计算') # 程序的标题名称 root.geometry("580x400+512+288") # 窗口的大小及页面的

  • Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns

  • Python的输出格式化和进制转换介绍

    目录 复习 输出格式化 字符串如何进行格式化? 进制转换 思考题: 总结 Python输出格式化字符串如何进行格式化? 进制转换 复习 1.pycharm的使用 2.注释:单行.多行 3.变量:格式:变量名=值起名:命名规范(大驼峰.小驼峰.下划线) 4.值数据类型:int float str bool类型转换 :a = 10str(a) 5.name = input(‘提示语句’)所有键盘输入的内容都是字符串类型的 6.运算符算数 + - * / % // **赋值 = += -=……比较 >

  • python实现各进制转换的总结大全

    前言 玩ctf经常遇到进制转换的问题,就正好做一个进制转换总结,分享出来供大家参考学习,下面来一起看看详细的介绍: 字符串与十六进制转换 例如百度ctf 12月的第二场第一个misc 666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D 比较简单的一种做法就是直接调用字符串的.decode('hex')解密即可, 但如果不用这个函数你会怎么解呢? 一种思路就是先2个分组,解出每组的

  • python实现基本进制转换的方法

    本文实例讲述了python基本进制转换的方法.分享给大家供大家参考.具体如下: # Parsing string with base into a number is easy num = int(str, radix) # We have to write our own function for outputting to string with arbitrary base def itoa(num, radix): result = "" while num > 0: r

  • Python内置函数bin() oct()等实现进制转换

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns

  • python binascii 进制转换实例

    如下所示: #coding:utf-8 import binascii a = 'worker' #先把worker转换成二进制数据然后在用十六进制表示 b = binascii.b2a_hex(a) print b #与b2a_hex相反 print binascii.a2b_hex(b) #这个功能和b2a_hex()一样 c = binascii.hexlify(a) print c #这个功能和a2b_hex()一样 print binascii.unhexlify(c) ######运

  • python 进制转换 int、bin、oct、hex的原理

    原理 十进制转n进制都可以使用倒除法:对十进制进行除n的运算,直到商为0为止,然后将各个步骤中得到的余数倒着写出来. n进制转十进制:(例子:二进制转十进制) 101001 => 2^5 + 2^3 + 1 = 32 + 8 + 1 = 41 10111 => 2^4 + 2^2 + 2 + 1 = 16 + 4 + 2 +1 = 23 同样类推一下,n进制转十进制就是将2为底换成n为底就好了 还有其他方法,比如使用中间二进制, 例如,将十进制转成八进制或者十六进制,先转成二进制再转成八进制或

  • python 实现format进制转换与删除进制前缀

    10进行十进制,十六进制,八进制,二进制的转换: (#:保留进制前缀) 对于带着进制前缀的,如"0x""0o""0b",可以直接在后面加上'x''o''b'进行删除: 其他的一些小技巧: format(num, ",") 快速分割千分位 数字是补全多少位,^居中 >右对齐 <左对齐 *^10 ⟹ 一共10位,居中,剩下的用*补齐 补充:Python 进制转换函数及前缀截取 "人生苦短,我用Python&q

随机推荐