Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1305 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [KSH] Opération sur valeurs hexadécimales

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[KSH] Opération sur valeurs hexadécimales

n°2245267
LibreArbit​re
RIP mon Orion
Posté le 08-12-2014 à 09:07:32  profilanswer
 

Bonjour,
 
J'ai besoin de votre aide car j'ai besoin de lister de lister des valeurs hexadécimales disponibles numérotées de 0000 à FFFF et je ne sais comment m'y prendre.
 
Dans mon cas, j'ai des listes de fichiers nommés de la forme :
 
30C4
30C5
30C6
30C8
30CA
30CC
30CE
30D0
30D6
 
et j'aurai besoin de lister uniquement les "trous" ici par exemple 30C7 mais je ne sais pas du tout comment m'y prendre sachant que cette opération doit consommer le minimum de temps CPU (je ne peux détailler l'environnement mais c'est critique).
 
Merci pour votre aide.


---------------
Hebergement d'images | Le topic de la VR standalone
mood
Publicité
Posté le 08-12-2014 à 09:07:32  profilanswer
 

n°2245363
Nukolau
Posté le 08-12-2014 à 17:13:13  profilanswer
 

Je vois une méthode "bourrin" qui devrait fonctionner, par contre ça coutera surement 1 a 2 sec de temps CPU :s

 

En gros l'idée serait de générer 2 fichiers :
- l'un qui contient la liste de tes fichiers nommé en hexa (FILE1)
- l'autre qui contient la liste des nombres en hexa compris entre 0 et FFFF (si possible créé à l'avance pour éviter de la regénérer à chaque fois)  (FILE2)

 

Ensuite tu peux utiliser la commande "comm" pour sortir ce qui est présent dans "FILE2" et absent de "FILE1"

 

La commande "comm" est très rapide, mais implique que les fichiers soit trié de la même façon via un sort

 

Pour générer le fichier "FILE2" une boucle sur un printf devrait faire l'affaire (peut être qu'il y a mieux, je ne sais pas) :

 
Code :
  1. for i in {0..65535}
  2. do
  3.   printf '%.4X\n' $i
  4. done > FILE2
 

et le comparatif

Code :
  1. comm -13 FILE1 FILE2
 

Edit : même pas besoin de rediriger le ls vers un fichier en fait :

Code :
  1. ls | sort | comm -13 - FILE2
 

Je viens de tester avec un jeu réduit et ça fonctionne nickel. Je pense même que si tu as les 65000 fichiers ça devrait être invisible niveau CPU si FILE2 est généré une fois au préalable

 

Edit2 : Vu que ça m'amusais ce truc, j'ai généré un répertoire avec les 65536 fichiers, j'en ai supprimé 2 et lancé le script en générant à la volée le fichier FILE2. Résultat du time, sur un poste linux de bureau, pas du tout un serveur :

 
Citation :


30C7
7AAA

 

real    0m0.94s
user    0m0.74s
sys     0m0.37s

 

Et le script utilisé :

 
Code :
  1. for i in {0..65535}
  2. do
  3.   printf '%.4X\n' $i
  4. done > FILE2
  5. cd test
  6. ls | comm -13 - ../FILE2



Message édité par Nukolau le 08-12-2014 à 17:47:44
n°2245400
LibreArbit​re
RIP mon Orion
Posté le 08-12-2014 à 23:34:36  profilanswer
 

Bonsoir,
 
Merci pour cette solution, je testerais ça demain ;)


---------------
Hebergement d'images | Le topic de la VR standalone
n°2245746
Profil sup​primé
Posté le 11-12-2014 à 13:06:07  answer
 

salut,
 
trouvé sur un autre forum, et adapté au cas présent

Code :
  1. $ { read i; i=$((16#$i)); while read j; do until test $((++i)) -eq $((16#$j)); do printf '%X\n' $i; done; done;} < fichier
  2. 30C7
  3. 30C9
  4. 30CB
  5. 30CD
  6. 30CF
  7. 30D1
  8. 30D2
  9. 30D3
  10. 30D4
  11. 30D5

n°2245852
LibreArbit​re
RIP mon Orion
Posté le 12-12-2014 à 11:07:36  profilanswer
 

:love:
 
watael, cela fonctionne parfaitement, un grand merci :jap:


---------------
Hebergement d'images | Le topic de la VR standalone

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [KSH] Opération sur valeurs hexadécimales

 

Sujets relatifs
SQL Comparaison 2 valeurs [résolu]Inserrtion données et recherche de valeurs
URGENT, but de la balise Multi-Décision operation flowcodegroup BY et moyenne de valeurs
Boucle et opération sur string en MS-DOS[KSH] Saisie de MDP d'une connexion SSH
HELP macro copie/colle valeurs entre 2 classeurs différentsRécuperer les valeurs checked en php
utiliser les valeurs de deux fichiersopération de lecture sur disque
Plus de sujets relatifs à : [KSH] Opération sur valeurs hexadécimales


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR