migration de G5 vers Xeon

Le
Bruno Causse
bonsoir,

j'ai plusieurs fichiers binaires de données a transferer.

des fichier int (32 bits)
short (16 bits)
float (32 bits)

quelle est la bonne solution?
--
Bruno Causse
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric Levenez
Le #16691151
Le 01/09/08 18:38, dans Causse »
j'ai plusieurs fichiers binaires de données a transferer.

des fichier int (32 bits)
short (16 bits)
float (32 bits)

quelle est la bonne solution?



Perl.

Si ton fichier n'est constitué que de int, ou que de short ou que de float,
il suffit d'inverser par 2 ou par 4 octets. Si ton fichier contient des
structures binaires, il faut connaître la structure, ce qui pourrait prendre
plus d'une ligne de code.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.
Bruno Causse
Le #16691371
"Eric Levenez" C4E1E90A.D75AB%
Le 01/09/08 18:38, dans Si ton fichier n'est constitué que de int, ou que de short ou que de
float,
il suffit d'inverser par 2 ou par 4 octets. Si ton fichier contient des
structures binaires, il faut connaître la structure, ce qui pourrait
prendre
plus d'une ligne de code.




c'est aussi simple que cela, merci,

je recois les Xeons demain.
Eric Levenez
Le #16691771
Le 01/09/08 19:04, dans Causse »
"Eric Levenez" C4E1E90A.D75AB%
Le 01/09/08 18:38, dans Si ton fichier n'est constitué que de int, ou que de short ou que de
float,
il suffit d'inverser par 2 ou par 4 octets. Si ton fichier contient des
structures binaires, il faut connaître la structure, ce qui pourrait
prendre
plus d'une ligne de code.



c'est aussi simple que cela, merci,



En perl, quand on a la commande qui va bien, c'est simple de faire un
couper/coller pour l'exécuter. Par contre, faire la commande dont je te
parles (avec pack/unpack) du premier coup et en une ligne, c'est plus
compliqué.

Pour faire une inversion de 2 octets (donc pour un fichier composé que de 16
bits), le plus simple est :

dd conv=swab < in > out

Ce qui est bête, c'est que dd n'a pas d'option pour 4 octets.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.
Eric Levenez
Le #16691941
Le 01/09/08 19:21, dans Levenez »
En perl, quand on a la commande qui va bien, c'est simple de faire un
couper/coller pour l'exécuter. Par contre, faire la commande dont je te
parles (avec pack/unpack) du premier coup et en une ligne, c'est plus
compliqué.



En y réfléchissant pour inverser 32 bits, je ferais cela :

perl -e "while (read(STDIN, $d, 4)) { print pack('N', unpack('V',
$d)); }" < in > out

Ce n'est pas joli, et sans doute pas rapide. Un Perlien ferait mieux.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.
Publicité
Poster une réponse
Anonyme