Select Git revision
06-script.py
-
Romain Vuillemot authoredRomain Vuillemot authored
08-conversion.py 2.87 KiB
# 8 Conversion de types
list1 = ['1', '2', '3']
str1 = ''.join(list1)
str1
# '123'
list1 = [1, 2, 3]
str1 = ''.join(str(e) for e in list1) # ou avec "" à la place de ''
str1
# '123'
a = "545.2222"
float(a)
# 545.2222 suivant le système, on peut avoir des '0' après les '2'
int(float(a))
# 545
def is_float(value):
try:
float(value)
return True
except:
return False
# On peut aussi utiliser la prédéfinie eval() qui évalue du code Python
eval("1.5")
# 1.5
# Une alternative plus sûre à eval()
import ast
ast.literal_eval("545.2222")
545.2222
ast.literal_eval("31")
31
# Des cas d'erreur
eval(toto) # toto non défini ou n'est pas un str/octes/code
ast.literal_eval(toto)
# Erreur dans les 2 cas
# Converstion en binaire
st = "hello Debase"
' '.join(format(ord(x), 'b') for x in st)
# '1101000 1100101 1101100 1101100 1101111 100000 1000100 1100101 1100010 1100001 1110011 1100101'
# Conversion de string en hexadécimal
s='Hello Debase of Ecl'
' '.join(format(ord(x), 'x') for x in s)
# '48 65 6c 6c 6f 20 44 65 62 61 73 65 20 6f 66 20 45 63 6c'
# Conversion entier en Unicode
chr(16) # Quelle est la forme hexa de 16 ?
#'\x10'
# Conversions décimal <==> base xx
int('12',8) # Quelle est la valeur décimale du nombre octal '12' (octal car base = 8)
# 10
int('12',16) # Quelle est la valeur décimale du nombre hexa '12' (hexa car base = 16)
# 18
int('12') # Quelle est la valeur décimale du nombre décimale '12' (décimal car base par défaut = 10)
# 12
int('1000',2) # Que donne le nombre binaire '1000' en décimal (binaire car base = 2)
# 8
# Pour convertir un entier en octal
oct(12)
# '0o14' #un 'O' au début (pour Octal)
oct(8)
# '0o10'
# Autres conversions
# octal
eval('0o010') == 10 # La valeur décimale de '0o010' est-elle 10
# False
eval('0o010')
# 8
oct(42) # La valeur octale de l'entier 42
# '0o52'
int('0o52', 0) # La valeur décimale de l'octale '0o52' (si base=0 alors base est dans le string)
# 42
int('1101', 2) # La valeur décimale du binaire '1101' (base explicite = 2)
#13
int('0b1101', 2) # Idem, base explicitée = 2, peut importe '0b'
#13
int('0b1101', 0) # La valeur décimale du binaire '0b1101' (base = 0 --> la base '0b' est dans le string)
#13
from struct import *
pack('hhl', 1, 2, 3)
# b'\x01\x00\x02\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00'
# b veut dire byte (2 octes). \x veut dire hexa
pack('b', 1)
# b'\x01'
pack('b', 16) # signed char de taille 1. On convertie 16 en signed char
# b'\x10'
In [39]: pack('B', 16) # unsigned char de taille 1
# b'\x10'
pack('h', 1)
# b'\x01\x00'
calcsize('h')
# 2
calcsize('b')
# 1
unpack('b', b'\x10')
# (16,)
type(unpack('b', b'\x10'))
# tuple
unpack('b', b'\x10')[0] # Première élé. Il y a virgule car taille tuple >= 2
# 16
pack('B',65) # donne b'A' = i.e. le caractère dont le code = 65