IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

import de fichiers


Sujet :

Langage Perl

  1. #61
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    0000 1010 1100 1000 0000 0001 1111 1001
    dans votre exemple, normalement le 1010 et le 1100 ne sont pas possible, en aucun cas ils doivent etre present mais sinon c'est le principe
    si on a
    0000 0001 0011 0100 1000 1111 1111 1111 ca donne 01368

  2. #62
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Alors voici une nouvelle version corrigé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use feature qw(:5.14);
     
    my ($in) = @ARGV;
     
    my $bak = "$in.bak";
    die "$bak already exists\n" if -f "$bak";
    rename $in, $bak;
    open my $IN, "<", $bak or die "Can't open file $bak for reading: $!";
    open my $OUT, ">", $in or die "Can't open file $in for writing: $!";
    my (@kept_lines, $decoded);
    while (my $line = <$IN>) {
      chomp($line);
      my ($code) = $line =~ /,([\da-f]+)$/i;
      next if !$code || $code !~ /^8[18]/;
     
      if ($code =~ /^81/) {
        warn "Line to decode found at $. in $bak\n" if !$decoded;
        warn "New line to decode at $. in $bak\n" if $decoded;
     
        my $bitcode = unpack("B*", pack("H*", $code));
        my $bit75 = substr($bitcode, 74, 8);
        my $bitpos;
        if ($bit75 eq "00000000") {
          my $bit171 = substr($bitcode, 170, 2);
          if ($bit171 eq "00" || $bit171 eq "11") {
            $bitpos = substr($bitcode, 185, 1) eq "1" ? 217 : 209;
          }
          else {
            $bitpos = substr($bitcode, 200, 1) eq "1" ? 232 : 224;
          }
        }
        elsif ($bit75 eq "00000001") {
          my $bit194 = substr($bitcode, 193, 2);
          if ($bit194 eq "00" || $bit194 eq "11") {
            $bitpos = substr($bitcode, 209, 1) eq "1" ? 241 : 232;
          }
          else {
            $bitpos = substr($bitcode, 222, 1) eq "1" ? 254 : 246;
          }
        }
        my $old_decoded = $decoded if $decoded;
        $decoded = join "", grep $_ < 10, map oct("0b$_"), substr($bitcode, $bitpos, 32) =~ /(.{4})/g if $bitpos;
        if ($old_decoded) {
          if ($decoded != $old_decoded) {
            warn "-> new decoded value is different from first occurence: old = $old_decoded, new = $decoded\n";
          }
          else {
            warn "-> same value ($decoded == $old_decoded)\n";
          }
        }
     
        if (@kept_lines) {
          map { say { $OUT } "$_ $decoded" } splice @kept_lines;
        }
      }
      elsif ($decoded) {
        say { $OUT } "$line $decoded";
      }
      else {
        push @kept_lines, $line;
      }
    }
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #63
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    ca donne bien mon résultat?
    Car j'ai encore un peu de mal à l'utilisation de perl, maintenant je sais que c'est bien installe, mais après ce code je le mets dans quoi? un fichier text?
    et ensuite je fais ce que m'a dis Laurent <nom du programme > <nom du fichier>

  4. #64
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Oui, 9571

    Pour info, je serai absent ce we, et de retour lundi matin.
    Il est facile d'adapter le script pour accepter le remplacement de plusieurs fichiers plutôt que d'un seul.
    Je regarderai lundi si personne n'a proposé de solution avant

    Bon week-end (et oui, je finis à midi, et cet aprèm, c'est sortie vélo ; avec un temps pareil, ce serait dommage de louper ça).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  5. #65
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    Super, merci infiniment!!!
    Bonne sortie vélo bien mérité!!

  6. #66
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mimieloic Voir le message
    Car j'ai encore un peu de mal à l'utilisation de perl, maintenant je sais que c'est bien installe, mais après ce code je le mets dans quoi? un fichier text?
    et ensuite je fais ce que m'a dis Laurent <nom du programme > <nom du fichier>
    Oui, tu le mets dans un fichier texte, de préférence avec l'extension ".pl", ça permet au moins de savoir ce que c'est. Donc par exemple, dans "programme.pl" (mais tu peux donner un nom plus en rapport avec ce que tu fais avec). Ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    perl programme.pl fichier.txt
    Sauf qu'il faut peut-être préciser le chemin, selon l'endroit où se trouvent le programme et les fichiers en entrée.

  7. #67
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Si tu n'y arrives pas d'ici là, je testerai le programme de Philou ce soir avec ton fichier de données.

    Je ne peux pas passer trop de temps là-dessus au boulot.

  8. #68
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour Marylène,

    je viens d'essayer le programme de Philou avec ton fichier de données, mais le résultat n'est pas probant pour l'instant: le fichier résultat généré est vide.

    Tu as réussi à faire tourner le programme (à défaut qu'il produise quelque chose)?

    Du coup, je vais essayer de le débuguer, mais ça va prendre un peu plus de temps. Je te tiens au courant de mes tentatives.

  9. #69
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Marylène,

    après correction du problème (simple problème de format de fichier entre Unix et Windows), voici le résultat que j'obtiens dans le fichier résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
     
    2015/03/03 09:00:04,639,1671,B->R03,88060002BA3048386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:00:09,739,1578,B->R03,88060002BAAFC8386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:00:14,839,1478,B->R03,88060002BB2F48386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:00:19,939,1354,B->R03,88060002BBAEC8386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:00:25,039,1741,B->R03,88060002BC2E48386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:00:30,139,1648,B->R03,88060002BCADC8386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:00:35,239,1544,B->R03,88060002BD2D48386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:00:40,339,1444,B->R03,88060002BDACC8386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:00:45,439,1341,B->R03,88060002BE2C48386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:00:50,539,1748,B->R03,88060002BEABC8386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:00:55,639,1634,B->R03,88060002BF2B48386E8000E49006A4816B000200040010B000000000 9571
    2015/03/03 09:01:00,739,1541,B->R03,88060002BFAAC8386E8000E49006A4816C000220044000B000000000 9571
    2015/03/03 09:06:46,939,1671,B->R03,88060002E179C8386E8000E49005FD803C5001A00346E83000000000 9571
    2015/03/03 09:06:46,789,1821,B->R04,88060002E17608386E8000E49005FD80315001A00346E83000000000 9571
    2015/03/03 09:06:47,539,1561,B->R04,88060002E188C8386E8000E49005FE802E0001E003C6E03000000000 9571
    2015/03/03 09:06:47,689,1421,B->R03,88060002E18C88386E8000E49005FE80390001E003C6E03000000000 9571
    2015/03/03 09:06:50,089,1514,B->R03,88060002E1C888386E8000E49005FE80F20001E003C7003000000000 9571
    2015/03/03 09:06:51,589,1518,B->R04,88060002E1EE08386E8000E49005FE81670002000407003000000000 9571
    2015/03/03 09:06:51,739,1858,B->R03,88060002E1F1C8386E8000E49005FE81720002000407003000000000 9571
    2015/03/03 09:06:56,689,1424,B->R04,88060002E26D88386E8000E49005FE82F60002400487203000000000 9571
    2015/03/03 09:07:01,789,1801,B->R04,88060002E2ED08386E8000E49005FE848B0002A00547203000000000 9571
    2015/03/03 09:07:06,889,1718,B->R04,88060002E36C88386E8000E49005FE86220002E005C7403000000000 9571
    2015/03/03 09:07:07,789,1801,B->R04,88060002E38308386E8000E49005FF80385001A00347483000000000 9571
    2015/03/03 09:07:08,389,1701,B->R04,88060002E39208386E8000E4900600802B0001C00387403000000000 9571
    2015/03/03 09:07:11,989,1608,B->R04,88060002E3EC08386E8000E4900600814E0001E003C7403000000000 9571
    2015/03/03 09:07:17,089,2004,B->R04,88060002E46B88386E8000E490060082EC0002400487603000000000 9571
    2015/03/03 09:07:22,189,1411,B->R04,88060002E4EB08386E8000E4900600848E0002A00547603000000000 9571
    2015/03/03 09:07:25,639,1448,B->R04,88060002E54148386E8000E490060180315001A00347683000000000 9571
    2015/03/03 09:07:27,289,1788,B->R04,88060002E56A88386E8000E490060180B85001C00387683000000000 9571
    2015/03/03 09:07:32,239,1848,B->R04,88060002E5E648386E8000E490060280320001A00347603000000000 9571
    2015/03/03 09:07:32,389,2198,B->R04,88060002E5EA08386E8000E4900602803F0001A00347803000000000 9571
    2015/03/03 09:07:37,489,1604,B->R04,88060002E66988386E8000E490060281E60002200447803000000000 9571
    2015/03/03 09:07:42,589,1491,B->R04,88060002E6E908386E8000E4900602839000026004C7803000000000 9571
    2015/03/03 09:07:43,639,1451,B->R04,88060002E70348386E8000E490060380385001A00347883000000000 9571
    2015/03/03 09:07:47,689,1378,B->R04,88060002E76888386E8000E4900603818C5002000407883000000000 9571
    2015/03/03 09:07:52,789,1774,B->R04,88060002E7E808386E8000E4900603833850026004C7883000000000 9571
    2015/03/03 09:07:56,239,1831,B->R04,88060002E83E48386E8000E490060480290001A00347803000000000 9571
    2015/03/03 09:07:57,889,1681,B->R04,88060002E86788386E8000E490060480B30001C00387803000000000 9571
    2015/03/03 09:08:00,289,1778,B->R04,88060002E8A388386E8000E490060580385001A00347A83000000000 9571
    2015/03/03 09:08:02,989,1581,B->R04,88060002E8E708386E8000E4900605811C5001E003C7A83000000000 9571
    2015/03/03 09:08:08,089,1478,B->R04,88060002E96688386E8000E490060582CC5002400487A83000000000 9571
    2015/03/03 09:08:13,189,1874,B->R04,88060002E9E608386E8000E4900605847D5002A00547A83000000000 9571
    2015/03/03 09:08:17,539,1521,B->R04,88060002EA52C8386E8000E49006D680375001A00347C83000000000 9571
    2015/03/03 09:08:18,139,1421,B->R04,88060002EA61C8386E8000E4900606802E0001C00387C03000000000 9571
    2015/03/03 09:08:18,289,1781,B->R04,88060002EA6588386E8000E4900606803B0001E003C7C03000000000 9571
    2015/03/03 09:08:23,389,1668,B->R04,88060002EAE508386E8000E490060681F30002200447C03000000000 9571
    2015/03/03 09:08:28,489,1568,B->R04,88060002EB6488386E8000E490060683AE0002800507E03000000000 9571
    2015/03/03 09:08:33,589,1464,B->R04,88060002EBE408386E8000E4900606856A0002C00587E03000000000 9571
    2015/03/03 09:08:38,089,1461,B->R04,88060002EC5488386E8000E49006D780355001A00347E83000000000 9571
    2015/03/03 09:08:38,689,1861,B->R04,88060002EC6388386E8000E49006D8802E0001C00387E03000000000 9571
    2015/03/03 09:08:43,789,1748,B->R04,88060002ECE308386E8000E49006D881ED0002200447E03000000000 9571
    2015/03/03 09:08:45,889,1651,B->R04,88060002ED1788386E8000E49006D980365001A00347E83000000000 9571
    2015/03/03 09:08:48,889,1658,B->R04,88060002ED6288386E8000E49006D9813D5001E003C7E83000000000 9571
    2015/03/03 09:08:53,989,1564,B->R04,88060002EDE208386E8000E49006D982FE5002400487E83000000000 9571
    2015/03/03 09:08:56,089,1448,B->R04,88060002EE1688386E8000E49006DA803A5001A00347E83000000000 9571
    2015/03/03 09:08:56,689,1348,B->R04,88060002EE2588386E8000E49006DB80320001C00387E03000000000 9571
    2015/03/03 09:08:59,089,1451,B->R04,88060002EE6188386E8000E49006DB81050001E003C7E03000000000 9571
    2015/03/03 09:09:04,189,1838,B->R04,88060002EEE108386E8000E49006DB82C40002400487E03000000000 9571
    2015/03/03 09:09:09,289,1754,B->R04,88060002EF6088386E8000E49006DB84820002A00547E03000000000 9571
    2015/03/03 09:09:13,189,1841,B->R04,88060002EFC208386E8000E49006DC80395001A00347E83000000000 9571
    2015/03/03 09:09:14,389,1641,B->R04,88060002EFE008386E8000E49006DC80A25001C00387E83000000000 9571
    2015/03/03 09:09:19,489,1541,B->R04,88060002F05F88386E8000E49006DC82615002200447E83000000000 9571
    2015/03/03 09:09:20,089,1441,B->R04,88060002F06E88386E8000E49006DD80320001A00347E03000000000 9571
    2015/03/03 09:09:24,589,1438,B->R04,88060002F0DF08386E8000E49006DD81BC0002000407E03000000000 9571
    2015/03/03 09:09:29,689,1824,B->R04,88060002F15E88386E8000E49006DD837B00026004C7E03000000000 9571
    2015/03/03 09:09:29,989,2024,B->R04,88060002F16608386E8000E49007D0803A5001A00347E83000000000 9571
    2015/03/03 09:09:34,789,1721,B->R04,88060002F1DE08386E8000E49007D081DF5002000407E83000000000 9571
    2015/03/03 09:09:39,889,1628,B->R04,88060002F25D88386E8000E49007D0839F50026004C7E83000000000 9571
    2015/03/03 09:09:42,889,1614,B->R04,88060002F2A888386E8000E49007D1802B0001A00347E03000000000 9571
    2015/03/03 09:09:44,989,1528,B->R04,88060002F2DD08386E8000E49007D180E30001E003C7E03000000000 9571
    2015/03/03 09:09:47,689,1821,B->R04,88060002F32088386E8000E49007D2802E5001A00347E83000000000 9571
    2015/03/03 09:09:50,089,1424,B->R04,88060002F35C88386E8000E49007D281015001E003C7E83000000000 9571
    2015/03/03 09:09:55,189,1821,B->R04,88060002F3DC08386E8000E49007D282C35002400488083000000000 9571
    2015/03/03 09:10:00,289,1718,B->R04,88060002F45B88386E8000E49007D284855002A00548083000000000 9571
    2015/03/03 09:10:04,939,1564,B->R04,88060002F4CFC8386E8000E49007D380305001A00348083000000000 9571
    2015/03/03 09:10:05,389,1618,B->R04,88060002F4DB08386E8000E49007D380585001C00387E83000000000 9571
    2015/03/03 09:10:05,689,1818,B->R04,88060002F4E288386E8000E49007D480350001E003C7E03000000000 9571
    2015/03/03 09:10:10,489,1504,B->R04,88060002F55A88386E8000E49007D481DD0002200448003000000000 9571
    2015/03/03 09:10:15,589,1421,B->R04,88060002F5DA08386E8000E49007D4839F0002800507E03000000000 9571
    2015/03/03 09:10:15,739,1761,B->R04,88060002F5DDC8386E8000E49007D580300001A00347E03000000000 9571
    2015/03/03 09:10:20,689,1808,B->R04,88060002F65988386E8000E49007D581E30002200447E03000000000 9571
    2015/03/03 09:10:25,039,1454,B->R04,88060002F6C648386E8000E49007D680345001A00347E83000000000 9571
    2015/03/03 09:10:25,639,1854,B->R04,88060002F6D548386E8000E49007D7802C0001C00387E03000000000 9571
    2015/03/03 09:10:25,789,2208,B->R04,88060002F6D908386E8000E49007D780390001E003C7E03000000000 9571
    2015/03/03 09:10:30,889,1591,B->R04,88060002F75888386E8000E49007D781FA0002200447E03000000000 9571
    2015/03/03 09:10:35,989,1501,B->R04,88060002F7D808386E8000E49007D783BC0002800508003000000000 9571
    2015/03/03 09:10:41,089,1398,B->R04,88060002F85788386E8000E49007D7857E0002C00588003000000000 9571
    2015/03/03 09:10:45,139,1844,B->R04,88060002F8BCC8386E8000E49007D880375001A00347E83000000000 9571
    2015/03/03 09:10:45,739,1754,B->R04,88060002F8CBC8386E8000E49007D9802F0001C00387E03000000000 9571
    2015/03/03 09:10:46,189,1794,B->R04,88060002F8D708386E8000E49007D980570001E003C7E03000000000 9571
    2015/03/03 09:10:51,289,1681,B->R04,88060002F95688386E8000E49007D982160002200447E03000000000 9571
    2015/03/03 09:10:56,389,1588,B->R04,88060002F9D608386E8000E49007D983D30002800507E03000000000 9571
    2015/03/03 09:11:01,489,1488,B->R04,88060002FA5588386E8000E49007D9858D0002E005C7C03000000000 9571
    2015/03/03 09:11:05,389,1581,B->R04,88060002FAB708386E8000E49007DC80315001A00347C83000000000 9571
    2015/03/03 09:11:05,989,1484,B->R04,88060002FAC608386E8000E49007DD80290001C00387C03000000000 9571
    2015/03/03 09:11:06,589,1874,B->R04,88060002FAD508386E8000E49007DD805D0002000407C03000000000 9571
    2015/03/03 09:11:11,689,1791,B->R04,88060002FB5488386E8000E49007DD82100002200447A03000000000 9571
    2015/03/03 09:11:16,789,1678,B->R04,88060002FBD408386E8000E49007DD83C00002800507A03000000000 9571
    2015/03/03 09:11:21,889,1578,B->R04,88060002FC5388386E8000E49007DD85700002C00587A03000000000 9571
    2015/03/03 09:11:25,339,1631,B->R04,88060002FCA9C8386E8000E49007DE80305001A00347C83000000000 9571
    2015/03/03 09:11:26,089,1361,B->R04,88060002FCBC88386E8000E49007DF80340001E003C7C03000000000 9571
    2015/03/03 09:11:26,989,1464,B->R04,88060002FCD308386E8000E49007DF80810002200447C03000000000 9571
    2015/03/03 09:11:32,089,1371,B->R04,88060002FD5288386E8000E49007DF82370002200447C03000000000 9571
    2015/03/03 09:11:37,189,1768,B->R04,88060002FDD208386E8000E49007DF83EF0002800507C03000000000 9571
    2015/03/03 09:11:42,289,1664,B->R04,88060002FE5188386E8000E49007DF85A90002E005C7E03000000000 9571
    2015/03/03 09:11:45,139,1798,B->R04,88060002FE98C8386E8000E49007E0803B5001A00347E83000000000 9571
    2015/03/03 09:11:45,739,1711,B->R04,88060002FEA7C8386E8000E49007E180330001C00387E03000000000 9571
    2015/03/03 09:11:47,389,1561,B->R04,88060002FED108386E8000E49007E180C30001C00387E03000000000 9571
    2015/03/03 09:11:52,489,1458,B->R04,88060002FF5088386E8000E49007E182820002400487E03000000000 9571
    2015/03/03 09:11:57,589,1858,B->R04,88060002FFD008386E8000E49007E184400002A00507E03000000000 9571
    2015/03/03 09:12:02,689,1744,B->R04,88060003004F88386E8000E49007E185FF0002E005C7E03000000000 9571
    2015/03/03 09:12:04,489,1458,B->R04,88060003007C88386E8000E49007E280365001A00347E83000000000 9571
    2015/03/03 09:12:05,089,1848,B->R04,88060003008B88386E8000E49007E3802F0001C00387E03000000000 9571
    2015/03/03 09:12:07,789,1641,B->R04,8806000300CF08386E8000E49007E3811D0001E003C8003000000000 9571
    2015/03/03 09:12:12,889,1558,B->R04,88060003014E88386E8000E49007E382DF0002400488003000000000 9571
    2015/03/03 09:12:17,989,1458,B->R04,8806000301CE08386E8000E49007E384A00002A00547E03000000000 9571
    2015/03/03 09:12:23,089,1844,B->R04,88060003024D88386E8000E49007E386610003000607E03000000000 9571
    2015/03/03 09:12:23,689,1734,B->R04,88060003025C88386E8000E49007E480305001A00347E83000000000 9571
    2015/03/03 09:12:24,439,1484,B->R04,88060003026F48386E8000E49007E580360001E003C8003000000000 9571
    2015/03/03 09:12:28,189,1731,B->R04,8806000302CD08386E8000E49007E581810002000408003000000000 9571
    2015/03/03 09:12:33,289,1638,B->R04,88060003034C88386E8000E49007E5834300026004C8003000000000 9571
    2015/03/03 09:12:38,389,1538,B->R04,8806000303CC08386E8000E49007E585070002C00588003000000000 9571
    2015/03/03 09:12:43,039,1371,B->R04,88060003044048386E8000E49007E6803B5001A00348083000000000 9571
    2015/03/03 09:12:43,489,1424,B->R04,88060003044B88386E8000E49007E680635001C00387E83000000000 9571
    2015/03/03 09:12:43,639,1774,B->R04,88060003044F48386E8000E49007E780340001C00387E03000000000 9571
    2015/03/03 09:12:48,589,1821,B->R04,8806000304CB08386E8000E49007E781E80002200447E03000000000 9571
    2015/03/03 09:12:53,689,1738,B->R04,88060003054A88386E8000E49007E783A90002800507E03000000000 9571
    2015/03/03 09:12:58,789,1624,B->R04,8806000305CA08386E8000E49007E785680002E005C7E03000000000 9571
    2015/03/03 09:13:02,539,1361,B->R04,880600030627C8386E8000E49008CA80305001A00347E83000000000 9571
    2015/03/03 09:13:03,289,1611,B->R04,88060003063A88386E8000E49007E880340001E003C7E03000000000 9571
    2015/03/03 09:13:03,889,1511,B->R04,88060003064988386E8000E49007E880690002000407E03000000000 9571
    2015/03/03 09:13:08,989,1408,B->R04,8806000306C908386E8000E49007E882260002200447E03000000000 9571
    2015/03/03 09:13:14,089,1818,B->R04,88060003074888386E8000E49007E883E20002800507E03000000000 9571
    2015/03/03 09:13:19,189,1714,B->R04,8806000307C808386E8000E49007E8859F0002E005C7E03000000000 9571
    2015/03/03 09:13:22,189,1708,B->R04,88060003081308386E8000E49008CB80395001A00347E83000000000 9571
    2015/03/03 09:13:22,789,1611,B->R04,88060003082208386E8000E49008CC80300001C00387E03000000000 9571
    2015/03/03 09:13:24,289,1601,B->R04,88060003084788386E8000E49008CC80B40001C00387E03000000000 9571
    2015/03/03 09:13:29,389,1508,B->R04,8806000308C708386E8000E49008CC82720002400487E03000000000 9571
    2015/03/03 09:13:31,339,1551,B->R04,8806000308F7C8386E8000E49008CD80315001A00347E83000000000 9571
    2015/03/03 09:13:34,489,1408,B->R04,88060003094688386E8000E49008CD81455001E003C7E83000000000 9571
    2015/03/03 09:13:36,589,2241,B->R05,88060003097B08386E8000E49008CD81FD5002200447E83000000000 9571
    2015/03/03 09:13:39,739,1598,B->R05,8806000309C9C8386E8000E49008CD831150026004C7E83000000000 9571
    2015/03/03 09:13:39,589,1804,B->R04,8806000309C608386E8000E49008CD83045002400487E83000000000 9571
    2015/03/03 09:13:41,689,1638,B->R05,8806000309FA88386E8000E49008CE803F5001A00347E83000000000 9571
    2015/03/03 09:13:41,539,1838,B->R04,8806000309F6C8386E8000E49008CE80315001A00347E83000000000 9571
    2015/03/03 09:13:42,439,1391,B->R05,880600030A0D48386E8000E49008CF80430001E003C7E03000000000 9571
    2015/03/03 09:13:42,289,1588,B->R04,880600030A0988386E8000E49008CF80360001E003C7E03000000000 9571
    2015/03/03 09:13:44,839,1484,B->R05,880600030A4948386E8000E49008CF81150001E003C7E03000000000 9571
    2015/03/03 09:13:44,689,1681,B->R04,880600030A4588386E8000E49008CF81080001E003C7E03000000000 9571
    Je te laisse déterminer si c'est ce que tu voulais.

  10. #70
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut Import de fichiers (nouveau fil, bis)
    Bonjour,

    je ne sais pas pourquoi le fil "Import de fichiers" s'est bloqué quand j'ai posté les résultats du test. J'ai essayé de créer un nouveau fil ("Import de fichiers, nouveau fil), et de nouveau le même problème.

    Du coup, je reposte les résultats des tests avec le programme de Philou et le fichier de données de Marylène, cette fois en pièce jointe.

    @Marylène: peux-tu vérifier que cela correspond à ce que tu attends et comparer le résultat avec celui de ton script VBA?

    Cordialement,
    Laurent.
    Fichiers attachés Fichiers attachés

  11. #71
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    Merci, mais je n'ai pas accès au code de @Philou, mais on trouvait le meme resultat Philou et moi.

  12. #72
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    Oui l'affichage correspond, j'ai une petite demande, peut on enlever pour l' exemple " 2015/03/03 09:00:04,639,1671,B->R03,88060002BA3048386E8000E49006A4816B000200040010B000000000 9571" peut on enlever les ",639,1671,B->R03" à chaque ligne, je n'en ai pas besoin, et pourquoi toutes les lignes sont collées les une aux autres?
    Sinon c'est parfait!!
    comment faire pour l'adapter à plusieurs fichiers maintenant?
    Merci pour votre aide.
    De plus j'ai mis le prgramme de Philou actuel dans un fichier programme.txt
    j'ai donc écris <programme.txt><nomdefichier.eur> mais l'interface m'a dit ne pas connaitre "
    est ce la bonne méthode?
    par ailleurs on avait parlé de in.txt.bak que je pouvais changer en in.eur.bak mais je vois pas ca dans le programme ?

  13. #73
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Je reposte le code de philou

    Sinon, quelqu'un a contacté un admin pour voir s'il peut réparer la discussion ? (on n'a plus accès aux messages de la dernière page).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use feature qw(:5.14);
     
    my ($in) = @ARGV;
     
    my $bak = "$in.bak";
    die "$bak already exists\n" if -f "$bak";
    rename $in, $bak;
    open my $IN, "<", $bak or die "Can't open file $bak for reading: $!";
    open my $OUT, ">", $in or die "Can't open file $in for writing: $!";
    my (@kept_lines, $decoded);
    while (my $line = <$IN>) {
      chomp($line);
      my ($code) = $line =~ /,([\da-f]+)$/i;
      next if !$code || $code !~ /^8[18]/;
     
      if ($code =~ /^81/) {
        warn "Line to decode found at $. in $bak\n" if !$decoded;
        warn "New line to decode at $. in $bak\n" if $decoded;
     
        my $bitcode = unpack("B*", pack("H*", $code));
        my $bit75 = substr($bitcode, 74, 8);
        my $bitpos;
        if ($bit75 eq "00000000") {
          my $bit171 = substr($bitcode, 170, 2);
          if ($bit171 eq "00" || $bit171 eq "11") {
            $bitpos = substr($bitcode, 185, 1) eq "1" ? 217 : 209;
          }
          else {
            $bitpos = substr($bitcode, 200, 1) eq "1" ? 232 : 224;
          }
        }
        elsif ($bit75 eq "00000001") {
          my $bit194 = substr($bitcode, 193, 2);
          if ($bit194 eq "00" || $bit194 eq "11") {
            $bitpos = substr($bitcode, 209, 1) eq "1" ? 241 : 232;
          }
          else {
            $bitpos = substr($bitcode, 222, 1) eq "1" ? 254 : 246;
          }
        }
        my $old_decoded = $decoded if $decoded;
        $decoded = join "", grep $_ < 10, map oct("0b$_"), substr($bitcode, $bitpos, 32) =~ /(.{4})/g if $bitpos;
        if ($old_decoded) {
          if ($decoded != $old_decoded) {
            warn "-> new decoded value is different from first occurence: old = $old_decoded, new = $decoded\n";
          }
          else {
            warn "-> same value ($decoded == $old_decoded)\n";
          }
        }
     
        if (@kept_lines) {
          map { say { $OUT } "$_ $decoded" } splice @kept_lines;
        }
      }
      elsif ($decoded) {
        say { $OUT } "$line $decoded";
      }
      else {
        push @kept_lines, $line;
      }
    }
    Sinon, vous avez discuté de quoi ce week-end ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  14. #74
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    Avez vous lu mon dernier message Philou?

  15. #75
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Oui, j'ai contacté Djibril qui m'a dit qu'il s'en occupait, mais j'ai l'impression qu'il a mal compris car il a supprimé le message qui marchait (que j'ai donc reposté le lendemain).

    Marylène, les lignes ne sont pas séparées parce qe le fichier est au format Unix. Le voici au format Dos/Windows.
    Fichiers attachés Fichiers attachés

  16. #76
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    Je rectifie ma question
    car j'ai reussi à faire marcher le programme de Philou et c'est exactement ca.
    j'ai deux demandes :S
    la premiere peut on enlever dans mes lignes la partie après les secondes, jusqu'au debut du message 88
    et la seconde comment faire votre unique ligne pour le faire à un fichier ?
    ( mes lignes sont bien les unes en dessous des autres aussi merci Laurent

    @Philou pouvez vous commenter un peu le programme pour que je comprenne un peu mieux , de if($bit75 eq"00000000") à ...if $bitpos, je comprends,
    mais que signifie la partie au debu avec les IN et OUT et les boucles de la fin avec warn ?

  17. #77
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Je vais commenter, en revanche pour passer à une fichier, il faudrait indiquer comment doit se comporter le programme, car il y aura plusieurs lignes 81 (au moins une par fichier je suppose), et qui pourront bien sûr être différentes. Je suppose que pour chaque fichier séparément, il faudra calculer la valeur décimale correspondant à la ligne 81, puis l'appliquer aux lignes 88 de ce fichier uniquement.
    Quand au fichier unique, est-ce simplement la concaténation des différents fichiers de sortie en un seul ?

    Pour exécuter un script perl, il est préférable de nommer le fichier source avec l'extension .pl

    Il est ensuite possible de l'appeler avec
    perl script.pl paramètres...
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  18. #78
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    Exactement,
    il peut y avoir plusieurs messages 81 dans un fichier, mais ils donneront le meme message .
    En revanche deux fichiers n'ont pas forcement le meme message 81
    il faut donc faire comme précedemment pour chaque fichier, et ensuite les concaténer ensemble pour en resortir qu'un seul fichier
    et pour enlever une partie de ma ligne c'est facile?

  19. #79
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Oui, pour enlever facilement le texte entre le time stamp et le code.

    Je vais mettre à jour et poster avec les commentaires (qui sont déjà écrits).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  20. #80
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Voici le code adapté et commenté. Utilisation :

    perl decode.pl *.txt > un_fichier.txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use feature qw(:5.14);
     
    # Le fichier résultat sera la sortie standard : utiliser > un_fichier.txt pour le stocker
     
    # Récupération des paramètres d'appel du script (on affecte au tableau @in, le tableau @ARGV)
    my @in = @ARGV;
     
    # Pour tous les fichier en entrée
    foreach my $in (@in) {
      warn "Treating $in...\n";
     
      # Création d'un nom de fichier backup
      my $bak = "$in.bak";
     
      # Sortir si le fichier backup existe déjà
      die "$bak already exists\n" if -f "$bak";
     
      # Renommer le fichier d'entrée en fichier backup
      rename $in, $bak;
     
      # Ouvrir le fichier backup (l'ancien fichier d'entrée) en lecture
      # et le fichier de sortie en écriture (le nouveau fichier d'entrée)
      open my $IN, "<", $bak or die "Can't open file $bak for reading: $!";
     
      # Déclarer un tableau pour les lignes 88 lues avant la ligne 81
      # et un scalaire pour le code décimal
      my (@kept_lines, $decoded);
     
      # Boucler sur toutes les lignes du fichier ouvert en entrée
      while (my $line = <$IN>) {
        # Supprimer les caractères de fin de ligne (mettre à jour la variable
        # $/ s'il ne s'agit pas de \n)
        chomp($line);
     
        # Récupération du timestamp et du code hexa de la ligne
        my ($timestamp, $code) = $line =~ /(.*?,).*,([\da-f]+)$/i;
     
        # Passer à la ligne suivante si le code n'est ni 81 ni 88
        next if !$code || $code !~ /^8[18]/;
     
        if ($code =~ /^81/) {
          # Si l'on a déjà décodé un code, le signaler, sinon simplement
          # indiquer que l'on décode
          warn "Line to decode found at $. in $bak\n" if !$decoded;
          warn "New line to decode at $. in $bak\n" if $decoded;
     
          # Convertir le code hexa en binaire
          # La transformation s'opère en deux temps :
          # pack("H*", $code) code en "binaire" le code hexa récupéré sous forme ASCII
          # puis unpack("B*", ...) décode le "binaire" en code binaire sous forme ASCII
          # "binaire" signifiant ici de vrai binaire numérique (comme il est stocké dans un entier numérique).
          # Les formats majuscules imposent un sens de code hexa et binaire "MSB" first (bit de poids fort en premier)
          my $bitcode = unpack("B*", pack("H*", $code));
          my $bit75 = substr($bitcode, 74, 8);
     
          # Déclaration d'une variable qui contiendra la position des 32bits à décoder
          my $bitpos;
          if ($bit75 eq "00000000") {
            my $bit171 = substr($bitcode, 170, 2);
            if ($bit171 eq "00" || $bit171 eq "11") {
              $bitpos = substr($bitcode, 185, 1) eq "1" ? 217 : 209;
            }
            else {
              $bitpos = substr($bitcode, 200, 1) eq "1" ? 232 : 224;
            }
          }
          elsif ($bit75 eq "00000001") {
            my $bit194 = substr($bitcode, 193, 2);
            if ($bit194 eq "00" || $bit194 eq "11") {
              $bitpos = substr($bitcode, 209, 1) eq "1" ? 241 : 232;
            }
            else {
              $bitpos = substr($bitcode, 222, 1) eq "1" ? 254 : 246;
            }
          }
          # Sauvegarde de l'éventuel code décimal actuellement déjà décodé
          my $old_decoded = $decoded if $decoded;
     
          # Construction du code décimal
          # La construction suit plusieurs étapes (pipeline de fonction à lire de droite à gauche) :
          # 1- substr($bitcode, $bitpos, 32) =~ /(.{4})/g : récupère le code binaire ASCII de 32 à la position $bitpos
          #                                                 et en extrait un tableau de chaines de 4 digit binaires
          #                                                 grâce à une recherche d'expression régulière globale
          # 2- map oct("0b$_") : pour chaque chaine binaire de 4 digits, convertir le code binaire ASCII en valeur numérique
          # 3- grep $_ < 10    : pour chaque valeur numérique, ne conserver que les valeurs inférieures à 10
          # 4- join ""         : concaténer sous forme "chaine" les digits décimaux ($decoded est alors une chaine
          #                      mais qui peut être utilisée dans un contexte numérique comme une valeur numérique)
          $decoded = join "", grep $_ < 10, map oct("0b$_"), substr($bitcode, $bitpos, 32) =~ /(.{4})/g if $bitpos;
     
          # Trivial
          if ($old_decoded) {
            if ($decoded != $old_decoded) {
              warn "-> new decoded value is different from first occurence: old = $old_decoded, new = $decoded\n";
            }
            else {
              warn "-> same value ($decoded == $old_decoded)\n";
            }
          }
     
          # Si l'on a stocké des lignes 88 précédent cette ligne 81, les traiter en ajoutant le code décimal
          if (@kept_lines) {
            map { say "$_ $decoded" } splice @kept_lines;
          }
        }
        # Si la ligne n'est pas une 81 (c'est donc forcément une 88) et que le code décimal a été décodé
        # traiter la ligne en ajoutant le code décimal au timestamp et au code hexa
        elsif ($decoded) {
          say "$timestamp$code $decoded";
        }
        # Si la ligne n'est pas une 81 et que le code n'est pas décodé, enregistrer la ligne (timestamp et code hexa) pour un traitement
        # ultérieur (lors du traitement de la ligne 81)
        else {
          push @kept_lines, "$timestamp$code";
        }
      }
    }
    PS : il n'y a encore pas la suppression du texte avant le code (je mettrai à jour ce post après ma pause).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 11 PremièrePremière 12345678 ... DernièreDernière

Discussions similaires

  1. [VB.NET] Import de fichiers d'une machine distante
    Par Bill_Baroud dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/06/2004, 13h16
  2. [VB.NET] Importation de fichier texte
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/05/2004, 09h39
  3. Importer un fichier IDAPI32.cfg propre à chaque appli(BDE)
    Par carlhian dans le forum Bases de données
    Réponses: 3
    Dernier message: 07/05/2004, 14h18
  4. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 13h56
  5. [DEV-C++]#import de fichier .tlb
    Par pdl dans le forum Dev-C++
    Réponses: 6
    Dernier message: 19/07/2002, 22h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo