Skip to content
Snippets Groups Projects
Select Git revision
  • cec31127b5651f46b279a2e04c19a2431f1787a0
  • master default protected
2 results

graph-get.py

Blame
  • 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