Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer les N premiers bits d'un ficheir binaire

13 réponses
Avatar
donutman
Bonjour =E0 tous,

savez-vous comment supprimer les N premiers bits d'un fichier binaire
sous Linux ?

J'avais pens=E9 =E0 la commande tail mais je devrais logiquement entrer en
argument quelquechose du genre :

tail -n (LONGUEUR DU FICHIER - N) monfichier

et je ne sais pas comment faire...

Avez-vous des id=E9es ?

Merci d'avance !

Pierre

3 réponses

1 2
Avatar
Eric Levenez
Le 10/07/08 21:47, dans <4876675f$0$14747$, « Nicolas
George » <nicolas$ a écrit :

Eric Levenez wrote in message <C49C3139.D222A%:
Oui, quelle norme ?



Tu le fais exprès ? La norme Unix, pas la norme sur le diamètre des
concombres dans l'Union Européenne. Quelle surprise !



Si tu regardes les différentes normes formant l'environnement Unix (il y en
a des tonnes), tu verras par exemple que celles-ci utilisent le terme
"octet" pour désigner un octet (8 bits). Le terme "byte" n'est plus utilisé
(ou en cours de remplacement dans les normes) car il n'est pas synonyme d'un
multiplet de 8 bits.

POSIX.1, par exemple, indique explicitement que les "bytes" qui ne font pas
8-bits doivent être supportés. Idem dans le Single UNIX Specification qui
donne le jeu de caractères portables et standard.

Une révision de la future norme POSIX.1 obligera (peut-être, selon le groupe
Austin) à avoir des bytes de 8 bits (pour certains points), tout en restant
conforme au langage C (ISO/IEC 9899) qui ne l'impose pas (ça va être chaud).
Mais à ma connaissance, aucune norme actuelle "unix" n'impose d'avoir des
"bytes" de 8 bits.

Quand une société passe les tests de conformité Posix, une des question est
"Number of bits in a char", qui, dans la définition du langage C est
équivalent à "Number of bits in a byte". La réponse doit être au minimum 8.
Peut-être que dans l'avenir un test de conformité sera refusé si la réponse
n'est pas 8, mais pas actuellement.

Peux-tu me citer une référence de cette norme Unix actuelle qui impose ce
que tu dis ?

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Avatar
Nicolas George
Eric Levenez wrote in message <C49C4DE1.D225C%:
Peux-tu me citer une référence de cette norme Unix actuelle qui impose ce
que tu dis ?



Single Unix, version 3 :

# 3.84 Byte
#
# An individually addressable unit of data storage that is exactly an octet,
# used to store a character or a portion of a character; see also Character.
# A byte is composed of a contiguous sequence of 8 bits. The least
# significant bit is called the "low-order" bit; the most significant is
# called the "high-order" bit.
#
# Note:
# The definition of byte from the ISO C standard is broader than the
# above and might accommodate hardware architectures with different
# sized addressable units than octets.

http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#tag_03_84

J'insiste bien sur « A byte is composed of a contiguous sequence of 8
bits. »

On peut aussi citer <URL:
http://www.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html
>, où il est précisé :

# {CHAR_BIT}
# Number of bits in a type char.
# [CX] [Option Start] Value: 8 [Option End]

Le [CX] indique que la précision est une extension ou une restriction par
rapport à la norme C99.
Avatar
Eric Levenez
Le 10/07/08 23:48, dans <48768395$0$1043$, « Nicolas
George » <nicolas$ a écrit :

Eric Levenez wrote in message <C49C4DE1.D225C%:
Peux-tu me citer une référence de cette norme Unix actuelle qui impose ce
que tu dis ?



Single Unix, version 3 :



Ok. Donc cet ajout est dans la dernière version de "The Open Group Base
Specifications" et n'était pas là avant : la norme "UNIX 03" requiert que
les bytes fassent 8 bits, mais pas les normes Unix précédentes, comme UNIX
98, UNIX 95 et UNIX 93.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
1 2