欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python string与bytes定义,相互转换

程序员文章站 2022-05-04 11:41:42
1- bytesb'C' b'\x01' b'\x010203'>>> a = b'\x01'>>> type(a)>>> a = b'C'>>> type(a)>>> a = b'\x010203'>>> type(a)>...

1- bytes

b'C'      b'\x01'     b'\x010203'    b'hello'

>>> a = b'\x01'
>>> type(a)
<class 'bytes'>

>>> a = b'C'
>>> type(a)
<class 'bytes'>

>>> a = b'\x010203'
>>> type(a)
<class 'bytes'>
>>> len(a)
5

>>> a = bytes()
>>> a
b''
>>> type(a)
<class 'bytes'>
>>> 
>>> 
>>> a = b'hello'
>>> type(a)
<class 'bytes'>
>>> a
b'hello' 

Python3 bytes 函数


描述

bytes 函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。它是 bytearray 的不可变版本。

语法

以下是 bytes 的语法:

class bytes([source[, encoding[, errors]]])

参数

  • 如果 source 为整数,则返回一个长度为 source 的初始化数组;bytes(int)指定字节的bytes,被0填充
  • 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
  • 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
  • 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
  • 如果没有输入任何参数,默认就是初始化数组为0个元素。

2-bytearray

>>> a = bytearray((1,2,4,5))
>>> type(a)
<class 'bytearray'>
>>> a
bytearray(b'\x01\x02\x04\x05') 

描述

bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。

语法

bytearray()方法语法:

class bytearray([source[, encoding[, errors]]])

参数

  • 如果 source 为整数,则返回一个长度为 source 的初始化数组;
  • 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
  • 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
  • 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
  • 如果没有输入任何参数,默认就是初始化数组为0个元素。


3-str与bytes之间的转换

# bytes object
b = b"example"

# str object
s = "example"

# str to bytes
s2b = bytes(s, encoding = "utf8")

# bytes to str
b2s = str(b, encoding = "utf8")

# an alternative method
# str to bytes
s2b2 = str.encode(s)

# bytes to str
bs2 = bytes.decode(b) 

4-bytes、bytearray

Python3引入两个新类型:

  • bytes:不可变类型
  • bytearrayy:字节数组,可变

bytes操作

除了格式化方法(format和format_map)和几个处理unicode数据的方法(包括casefold、idecimal、isdentifier、isnumeric、isprintable和encode)之外,str类型的其他方法都支持bytes和bytearray

  • 类方法bytes.fromhex(string)
    string必须是2个字符的16进制形式,“61 62 6a 6b”,空格将被忽略
In [8]: a=bytes.fromhex("61 62 63 6a 6b") 

In [9]: a
Out[9]: b'abcjk' 
  • hex()和上面相反
  • 返回进制的字符串
In [10]: b="abc".encode().hex()

In [11]: b
Out[11]: '616263 
  • int.from_bytes(bytes, byteorder)
  • bytes类型转换为十进制整数int类型
In [6]: a = int.from_bytes(b"abc", "big")

In [7]: hex(a)
Out[7]: '0x616263' 
  • 索引,返回一个int类型数
In [12]: b"abcd"[1]
Out[12]: 98

bytearray操作

  • 和bytes类型的方法相同
In [9]: bytearray(b"abcdefk").replace(b"f",b"m")
Out[9]: bytearray(b'abcdemk') 
In [10]: bytearray(b"abcdefk").find(b"a")
Out[10]: 0 
  • 类方法
    bytearray.fromhex(string)
    string必须是2个字符的16进制形式
In [11]: bytearray.fromhex("61 62 6364 65")
Out[11]: bytearray(b'abcde') 
  • hex()上面的相反
In [12]: bytearray("abc".encode()).hex()
Out[12]: '616263' 
  • 索引
In [13]: bytearray(b"abcde")[1]
Out[13]: 98 
  • append(int)尾部追加一个元素
In [14]: b=bytearray()
In [15]: b.append(97)

In [16]: b
Out[16]: bytearray(b'a') 
  • insert(index,int)在指定位置插入元素
In [17]: b.insert(1,99)

In [18]: b
Out[18]: bytearray(b'ac') 
  • extend(iyterable_of_ints)将一个可迭代的整数集合追加到当前的bytearray
In [19]: b.extend([65,66,67])

In [20]: b
Out[20]: bytearray(b'acABC') 
  • pop(index= -1)从指定的索引上一处元素,默认从尾部移除,返回移除的值的int类型
In [21]: b.pop()
Out[21]: 67 
  • remove(value),找到第一个value移除,找不到抛异常
  • clear()清空bytearray
In [29]: b
Out[29]: bytearray(b'acA')

In [30]: b.clear()

In [31]: b
Out[31]: bytearray(b'') 
  • reverse()就地翻转
In [27]: b
Out[27]: bytearray(b'Aca')

In [28]: b.reverse()

In [29]: b
Out[29]: bytearray(b'acA')

5-int byte

use python3 package struct

https://blog.csdn.net/qq_30638831/article/details/80421019