# 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