int() 函数用于将一个字符串或数字转换为整型。
>>> int('10',8)
8
hex() 函数用于将一个指定数字转换为 16 进制数。
>>>hex(255)
'0xff'
oct() 函数将一个整数转换成 8 进制字符串,8 进制以 0o 作为前缀表示。
>>> oct(10)
'0o12'
bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
>>>bin(10)
'0b1010'
bytes() 函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。它是 bytearray 的不可变版本。
>>> a = bytes('hello','ascii')
>>> a
b'hello'
str() 万物转字符串函数哈哈,可以把二进制对象转换成字符串
>>> str(a)
"b'hello'"
当然 encode 和 decode也是不错的选择:
>>> a = 'hello'.encode()
>>> a
b'hello'
>>> a.decode()
'hello'
bytes() 对比 bytearray():
>>> a = bytes('hello','ascii')
>>> a
b'hello'
>>> a[0] = a[1]
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: 'bytes' object does not support item assignment
>>> type(a)
<class 'bytes'>
>>> b = bytearray('hello','ascii')
>>> b
bytearray(b'hello')
>>> b[0] = b[1]
>>> b
bytearray(b'eello')
>>> type(b)
<class 'bytearray'>
注意到bytearray是可变的
chr() 用一个整数作参数,返回一个对应的字符。
>>>chr(0x30)
'0'
>>> chr(97)
'a'
>>> chr(8364)
'€'
ord() 函数是 chr() 函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。
>>>ord('a')
97
>>> ord('€')
8364
int.from_bytes()功能是将二进制对象转化成整数。'12’如果没有标明进制,看做ascii码值
num1 = int.from_bytes(b'12', byteorder = 'big')
# '12':0011 0001 0011 0010 (大端:数据低位靠左(大)存)
num2 = int.from_bytes(b'12', byteorder = 'little')
# '12':0011 0010 0011 0001 (小端:数据低位靠右(小)存)
print(num1,num2)
# 12594 12849
(number).to_bytes()功能将整数转化成二进制对象
byt1 = (1024).to_bytes(2, byteorder = 'big')
byt2 = (1024).to_bytes(10, byteorder = 'big')
byt3 = (-1024).to_bytes(10, byteorder= 'big',signed= True) # 负数由补码表示
lis1 = ['byt1', 'byt2','byt3']
lis2 = [byt1, byt2, byt3]
lis3 = zip(lis1, lis2)
dic = dict(lis3)
print(dic)
# 'byt1': b'\x04\x00'
# 'byt2': b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00'
# 'byt3': b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'
大整数转二进制对象
byt1 = (2077392566271395359695912870032509).to_bytes(15, byteorder = 'big')
print(byt1)
# b'\x00flag{B4by_Rs4}'
hexlify&unhexlify
import binascii
s = b'abcde'
h = binascii.b2a_hex(s) # 二进制 转16进制 '6162636465'
print(h)
h = binascii.hexlify(s) # 作用同上
print(h)
s = binascii.a2b_hex(h) # 16进制转二进制 b'abcde'
print(s)
s = binascii.unhexlify(h) # 作用同上
print(s)