Re: [linux] [HS] Question C
Bien vu, j'avais oublié le ">> x" pour augmenter la perf des divisions simples. Le samedi 20 août 2005 à 03:35 +0200, Jean-Francois Dive a écrit : > [EMAIL PROTECTED]:~$ cat t.c > #include > > int main() > { > int a = 0x21E; > int left = a >> 8; > int right = a & 0xFF; > printf("0x%02X 0x%02X 0x%02X\n", a, left, right); > } > [EMAIL PROTECTED]:~$ gcc -o t.c > [EMAIL PROTECTED]:~$ ./ > 0x21E 0x02 0x1E > [EMAIL PROTECTED]:~$ > > > On Fri, Aug 19, 2005 at 02:25:16PM +0200, Bruno Berteau wrote: > > Fabian Vilers a ?crit : > > > > >Si tu as deux octets, divise ton nombre par 100 le r?sultat sera l'octet > > >"de gauche", reprend ton nombre initial, soustrait lui le r?sultat > > >pr?c?dent multipli? par 100 pour obtenir l'octet "de droite". > > > > > Merci Fabian, > > > > Yes c'est presque ?a. En fait c'est plut?t en divisant par 255 (ou FF en > > hexa) pour avoir l'octet de poids fort. > > int(21E / FF) = 2 > > > > En tatonnant un peu J'ai retrouv? les calculs avec les op?rateurs logiques > > > > octet_gauche = 021E & FF > > octet_droite = (021E & FF00 ) / 100 > > > > Merci de votre aide. > > > > Cordialement. > > > > -- > > Bruno Berteau > > http://b.berteau.free.fr > > > > ___ > > Linux Mailing List - http://www.unixtech.be > > Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux > > Archives: http://www.mail-archive.com/linux@lists.unixtech.be > > IRC: chat.unixtech.be:6667 - #unixtech > > NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech > > ___ > Linux Mailing List - http://www.unixtech.be > Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux > Archives: http://www.mail-archive.com/linux@lists.unixtech.be > IRC: chat.unixtech.be:6667 - #unixtech > NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech ___ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/linux@lists.unixtech.be IRC: chat.unixtech.be:6667 - #unixtech NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech
Re: [linux] [HS] Question C
[EMAIL PROTECTED]:~$ cat t.c #include int main() { int a = 0x21E; int left = a >> 8; int right = a & 0xFF; printf("0x%02X 0x%02X 0x%02X\n", a, left, right); } [EMAIL PROTECTED]:~$ gcc -o t.c [EMAIL PROTECTED]:~$ ./ 0x21E 0x02 0x1E [EMAIL PROTECTED]:~$ On Fri, Aug 19, 2005 at 02:25:16PM +0200, Bruno Berteau wrote: > Fabian Vilers a ?crit : > > >Si tu as deux octets, divise ton nombre par 100 le r?sultat sera l'octet > >"de gauche", reprend ton nombre initial, soustrait lui le r?sultat > >pr?c?dent multipli? par 100 pour obtenir l'octet "de droite". > > > Merci Fabian, > > Yes c'est presque ?a. En fait c'est plut?t en divisant par 255 (ou FF en > hexa) pour avoir l'octet de poids fort. > int(21E / FF) = 2 > > En tatonnant un peu J'ai retrouv? les calculs avec les op?rateurs logiques > > octet_gauche = 021E & FF > octet_droite = (021E & FF00 ) / 100 > > Merci de votre aide. > > Cordialement. > > -- > Bruno Berteau > http://b.berteau.free.fr > > ___ > Linux Mailing List - http://www.unixtech.be > Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux > Archives: http://www.mail-archive.com/linux@lists.unixtech.be > IRC: chat.unixtech.be:6667 - #unixtech > NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech -- -- -> Jean-Francois Dive --> [EMAIL PROTECTED] I think that God in creating Man somewhat overestimated his ability. -- Oscar Wilde ___ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/linux@lists.unixtech.be IRC: chat.unixtech.be:6667 - #unixtech NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech
Re: [linux] [HS] Question C
Bruno Berteau a écrit : Merci Fabian, Yes c'est presque ça. En fait c'est plutôt en divisant par 255 (ou FF en hexa) pour avoir l'octet de poids fort. int(21E / FF) = 2 [...] Mea culpa tu avais raison Fabian. J'ai été un peu trop vite. -- Bruno Berteau http://b.berteau.free.fr ___ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/linux@lists.unixtech.be IRC: chat.unixtech.be:6667 - #unixtech NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech
RE: [linux] [HS] Question C
> > Yes c'est presque ça. En fait c'est plutôt en divisant par > 255 (ou FF en > hexa) pour avoir l'octet de poids fort. > int(21E / FF) = 2 > Evidement, j'ai oublié de préciser que je divisait par 0x100 et non par 100 décimal ;-) ___ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/linux@lists.unixtech.be IRC: chat.unixtech.be:6667 - #unixtech NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech
Re: [linux] [HS] Question C
Fabian Vilers a écrit : Si tu as deux octets, divise ton nombre par 100 le résultat sera l'octet "de gauche", reprend ton nombre initial, soustrait lui le résultat précédent multiplié par 100 pour obtenir l'octet "de droite". Merci Fabian, Yes c'est presque ça. En fait c'est plutôt en divisant par 255 (ou FF en hexa) pour avoir l'octet de poids fort. int(21E / FF) = 2 En tatonnant un peu J'ai retrouvé les calculs avec les opérateurs logiques octet_gauche = 021E & FF octet_droite = (021E & FF00 ) / 100 Merci de votre aide. Cordialement. -- Bruno Berteau http://b.berteau.free.fr ___ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/linux@lists.unixtech.be IRC: chat.unixtech.be:6667 - #unixtech NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech
RE: [linux] [HS] Question C
> Merci pour ta réponse. Ce n'est pas une chaine de caractère > mais c'est un entier. > Je n'ai pas été très clair. Ce que je veux faire c'est à > partir du nombre codé sur 2 octets récupérer séparément > l'octet de droite (02) et celui de gauche (1e). D'après les > vagues souvenirs que j'ai, il me semble que ça se fait avec > les opérateurs logiques (or, and, xor...). Si tu as deux octets, divise ton nombre par 100 le résultat sera l'octet "de gauche", reprend ton nombre initial, soustrait lui le résultat précédent multiplié par 100 pour obtenir l'octet "de droite". ___ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/linux@lists.unixtech.be IRC: chat.unixtech.be:6667 - #unixtech NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech
Re: [linux] [HS] Question C
Bruno Berteau a écrit : Bonjour, Merci pour ta réponse. Ce n'est pas une chaine de caractère mais c'est un entier. Je n'ai pas été très clair. Ce que je veux faire c'est à partir du nombre codé sur 2 octets récupérer séparément l'octet de droite (02) et celui de gauche (1e). D'après les vagues souvenirs que j'ai, il me semble que ça se fait avec les opérateurs logiques (or, and, xor...). re, Pour avoir un langage plus informatique ce sont l'octet de poids fort et l'octet de poids faible. Maintenant que je me rappelle de ça je peux googeliser pour trouver le calcul. Cordialement. -- Bruno Berteau http://b.berteau.free.fr ___ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/linux@lists.unixtech.be IRC: chat.unixtech.be:6667 - #unixtech NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech
Re: [linux] [HS] Question C
Thomas Silvestre a écrit : Tu récupère une chaîne de charactères contenant 021e? Si c'est le cas voici une méthode: #include int main (int argc, char *argv[]) { long int mydec; if (argc < 2) return 1; mydec = strtol (argv[1], NULL, 16); printf ("%s vaut %d en décimal\n", argv[1], mydec); return 0; } Bonjour, Merci pour ta réponse. Ce n'est pas une chaine de caractère mais c'est un entier. Je n'ai pas été très clair. Ce que je veux faire c'est à partir du nombre codé sur 2 octets récupérer séparément l'octet de droite (02) et celui de gauche (1e). D'après les vagues souvenirs que j'ai, il me semble que ça se fait avec les opérateurs logiques (or, and, xor...). Cordialement. -- Bruno Berteau http://b.berteau.free.fr ___ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/linux@lists.unixtech.be IRC: chat.unixtech.be:6667 - #unixtech NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech
Re: [linux] [HS] Question C
Tu récupère une chaîne de charactères contenant 021e? Si c'est le cas voici une méthode: #include int main (int argc, char *argv[]) { long int mydec; if (argc < 2) return 1; mydec = strtol (argv[1], NULL, 16); printf ("%s vaut %d en décimal\n", argv[1], mydec); return 0; } hope this help -- Thomas Le vendredi 19 août 2005 à 12:00 +0200, Bruno Berteau a écrit : > Bonjour, > > Désolé pour cette question hors sujet. Voilà je suis en train de faire > un petit programme en C sous linux pour mettre à jour la base de données > de mon lecteur mp3/ogg (un NEO jukebox vendu aussi sous la marque > Typhoon comme my mini DJ) et je bloque sur un petit problème. Une fois > que j'ai le nombre de fichiers par ex 021e en hexadécimal je ne sais pas > quel est le calcul pour "séparer" 02 et 1e. Quelqu'un sait le faire ? > > Cordialement. > ___ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/linux@lists.unixtech.be IRC: chat.unixtech.be:6667 - #unixtech NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech
[linux] [HS] Question C
Bonjour, Désolé pour cette question hors sujet. Voilà je suis en train de faire un petit programme en C sous linux pour mettre à jour la base de données de mon lecteur mp3/ogg (un NEO jukebox vendu aussi sous la marque Typhoon comme my mini DJ) et je bloque sur un petit problème. Une fois que j'ai le nombre de fichiers par ex 021e en hexadécimal je ne sais pas quel est le calcul pour "séparer" 02 et 1e. Quelqu'un sait le faire ? Cordialement. -- Bruno Berteau http://b.berteau.free.fr ___ Linux Mailing List - http://www.unixtech.be Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux Archives: http://www.mail-archive.com/linux@lists.unixtech.be IRC: chat.unixtech.be:6667 - #unixtech NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech