Re: [linux] [HS] Question C

2005-08-19 Par sujet Thomas Silvestre
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

2005-08-19 Par sujet Jean-Francois Dive
[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

2005-08-19 Par sujet Bruno Berteau

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

2005-08-19 Par sujet Fabian Vilers

> 
> 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

2005-08-19 Par sujet Bruno Berteau

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

2005-08-19 Par sujet Fabian Vilers

> 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

2005-08-19 Par sujet Bruno Berteau

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

2005-08-19 Par sujet Bruno Berteau

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

2005-08-19 Par sujet Thomas Silvestre
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

2005-08-19 Par sujet Bruno Berteau

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