Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric Levenez
Le 01/09/08 18:38, dans <48bc1a78$0$26944$, « Bruno Causse » a écrit :
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 -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 01/09/08 18:38, dans <48bc1a78$0$26944$426a74cc@news.free.fr>, « Bruno
Causse » <bcausse@lepoint.tm.fr> a écrit :
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 -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 01/09/08 18:38, dans <48bc1a78$0$26944$, « Bruno Causse » a écrit :
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 -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Bruno Causse
"Eric Levenez" a écrit dans le message de news: C4E1E90A.D75AB%
Le 01/09/08 18:38, dans <48bc1a78$0$26944$, « Bruno 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" <usenet@levenez.com> a écrit dans le message de news:
C4E1E90A.D75AB%usenet@levenez.com...
Le 01/09/08 18:38, dans <48bc1a78$0$26944$426a74cc@news.free.fr>, « Bruno
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.
"Eric Levenez" a écrit dans le message de news: C4E1E90A.D75AB%
Le 01/09/08 18:38, dans <48bc1a78$0$26944$, « Bruno 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 01/09/08 19:04, dans <48bc20b1$0$17483$, « Bruno Causse » a écrit :
"Eric Levenez" a écrit dans le message de news: C4E1E90A.D75AB%
Le 01/09/08 18:38, dans <48bc1a78$0$26944$, « Bruno 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 -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 01/09/08 19:04, dans <48bc20b1$0$17483$426a74cc@news.free.fr>, « Bruno
Causse » <bcausse@lepoint.tm.fr> a écrit :
"Eric Levenez" <usenet@levenez.com> a écrit dans le message de news:
C4E1E90A.D75AB%usenet@levenez.com...
Le 01/09/08 18:38, dans <48bc1a78$0$26944$426a74cc@news.free.fr>, « Bruno
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 -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 01/09/08 19:04, dans <48bc20b1$0$17483$, « Bruno Causse » a écrit :
"Eric Levenez" a écrit dans le message de news: C4E1E90A.D75AB%
Le 01/09/08 18:38, dans <48bc1a78$0$26944$, « Bruno 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 -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Eric Levenez
Le 01/09/08 19:21, dans <C4E1F12D.D75BD%, « Eric Levenez » a écrit :
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 -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 01/09/08 19:21, dans <C4E1F12D.D75BD%usenet@levenez.com>, « Eric
Levenez » <usenet@levenez.com> a écrit :
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 -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 01/09/08 19:21, dans <C4E1F12D.D75BD%, « Eric Levenez » a écrit :
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 -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.