Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une
méthode pour convertir un char * ou un nombre en nombre binaire, et
l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char
* j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour
convertir un mot en nombre binaire. (A partir du code ascii?). Mais
comment faire dans ce cas pour différencier un nombre d'un mot?
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
Pierre Maurette
Bonjour,
Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une méthode pour convertir un char * ou un nombre en nombre binaire, et l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char * j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour convertir un mot en nombre binaire. (A partir du code ascii?). Mais comment faire dans ce cas pour différencier un nombre d'un mot? Un nombre binaire n'existe pas. C'est la représentation d'un nombre
(c'est à dire pour C et C++ une chaîne de caractère) qui peut être binaire, octal, décimale ou hexadécimale. Donc vous ne pouvez pas convertir un mot en nombre binaire, mais un mot (interprété comme une représentation binaire) en nombre. uint8_t A = 25; // 000011001 en binaire, 19 en hexa Ce que vous voulez, c'est peut-être une fonction qui renvoie (ou modifie) la chaîne "000011001" quand elle est nourrie par 25, et une autre qui analyse la chaîne "000011001" et renvoie un entier égal à 25. Pour la seconde, strtoul() devrait convenir. Pour la preemière, en binaire, je ne vois pas. Mais ce n'est pas grand-chose à écrire. -- Pierre
Bonjour,
Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une
méthode pour convertir un char * ou un nombre en nombre binaire, et
l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char
* j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour
convertir un mot en nombre binaire. (A partir du code ascii?). Mais
comment faire dans ce cas pour différencier un nombre d'un mot?
Un nombre binaire n'existe pas. C'est la représentation d'un nombre
(c'est à dire pour C et C++ une chaîne de caractère) qui peut être
binaire, octal, décimale ou hexadécimale.
Donc vous ne pouvez pas convertir un mot en nombre binaire, mais un mot
(interprété comme une représentation binaire) en nombre.
uint8_t A = 25; // 000011001 en binaire, 19 en hexa
Ce que vous voulez, c'est peut-être une fonction qui renvoie (ou
modifie) la chaîne "000011001" quand elle est nourrie par 25, et une
autre qui analyse la chaîne "000011001" et renvoie un entier égal à 25.
Pour la seconde, strtoul() devrait convenir. Pour la preemière, en
binaire, je ne vois pas. Mais ce n'est pas grand-chose à écrire.
--
Pierre
Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une méthode pour convertir un char * ou un nombre en nombre binaire, et l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char * j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour convertir un mot en nombre binaire. (A partir du code ascii?). Mais comment faire dans ce cas pour différencier un nombre d'un mot? Un nombre binaire n'existe pas. C'est la représentation d'un nombre
(c'est à dire pour C et C++ une chaîne de caractère) qui peut être binaire, octal, décimale ou hexadécimale. Donc vous ne pouvez pas convertir un mot en nombre binaire, mais un mot (interprété comme une représentation binaire) en nombre. uint8_t A = 25; // 000011001 en binaire, 19 en hexa Ce que vous voulez, c'est peut-être une fonction qui renvoie (ou modifie) la chaîne "000011001" quand elle est nourrie par 25, et une autre qui analyse la chaîne "000011001" et renvoie un entier égal à 25. Pour la seconde, strtoul() devrait convenir. Pour la preemière, en binaire, je ne vois pas. Mais ce n'est pas grand-chose à écrire. -- Pierre
Ivan Vecerina
"Pascal" wrote in message news:
Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une méthode pour convertir un char * ou un nombre en nombre binaire, et l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char * j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour convertir un mot en nombre binaire. (A partir du code ascii?). Mais comment faire dans ce cas pour différencier un nombre d'un mot?
En C++, la représentation binaire de tout objet, groupée (typiquement) par octets, est accessible en faisant un cast de l'adresse de l'objet en 'unsigned char*'. L'objet peut alors être accédé comme un tableau de 'unsigned char' dont la taille est donnée p.ex. par sizof(objet).
Pour plus de portabilité (voir problèmes d'"endianness"), il est parfois judicieux d'explicitement convertir par exemple un 'unsigned short' en une séquence d'octets. On utilise alors quelque chose du genre: unsigned char octetDuHaut = (valeur>>8) & 0xFF; unsigned char octetDuBas = (valeur) & 0xFF; Le nombre peut être reconstitué comme suit: unsigned short valeur = (octetDuHaut<<8) | octetDuBas;
Bonne chance, Ivan -- http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form
"Pascal" <teapa5@B022-05.fr> wrote in message
news:pan.2005.02.12.13.55.23.293145@B022-05.fr...
Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une
méthode pour convertir un char * ou un nombre en nombre binaire, et
l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char
* j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour
convertir un mot en nombre binaire. (A partir du code ascii?). Mais
comment faire dans ce cas pour différencier un nombre d'un mot?
En C++, la représentation binaire de tout objet, groupée (typiquement)
par octets, est accessible en faisant un cast de l'adresse de l'objet
en 'unsigned char*'. L'objet peut alors être accédé comme un tableau
de 'unsigned char' dont la taille est donnée p.ex. par sizof(objet).
Pour plus de portabilité (voir problèmes d'"endianness"), il est parfois
judicieux d'explicitement convertir par exemple un 'unsigned short' en
une séquence d'octets. On utilise alors quelque chose du genre:
unsigned char octetDuHaut = (valeur>>8) & 0xFF;
unsigned char octetDuBas = (valeur) & 0xFF;
Le nombre peut être reconstitué comme suit:
unsigned short valeur = (octetDuHaut<<8) | octetDuBas;
Bonne chance,
Ivan
--
http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form
Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une méthode pour convertir un char * ou un nombre en nombre binaire, et l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char * j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour convertir un mot en nombre binaire. (A partir du code ascii?). Mais comment faire dans ce cas pour différencier un nombre d'un mot?
En C++, la représentation binaire de tout objet, groupée (typiquement) par octets, est accessible en faisant un cast de l'adresse de l'objet en 'unsigned char*'. L'objet peut alors être accédé comme un tableau de 'unsigned char' dont la taille est donnée p.ex. par sizof(objet).
Pour plus de portabilité (voir problèmes d'"endianness"), il est parfois judicieux d'explicitement convertir par exemple un 'unsigned short' en une séquence d'octets. On utilise alors quelque chose du genre: unsigned char octetDuHaut = (valeur>>8) & 0xFF; unsigned char octetDuBas = (valeur) & 0xFF; Le nombre peut être reconstitué comme suit: unsigned short valeur = (octetDuHaut<<8) | octetDuBas;
Bonne chance, Ivan -- http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form
James Kanze
Pierre Maurette wrote:
Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une méthode pour convertir un char * ou un nombre en nombre binaire, et l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char * j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour convertir un mot en nombre binaire. (A partir du code ascii?). Mais
Un nombre binaire n'existe pas. C'est la représentation d'un nombre (c'est à dire pour C et C++ une chaîne de caractère) qui peut être binaire, octal, décimale ou hexadécimale.
Autant dire qu'un nombre n'existe pas. Les nombres sont normalement représentés en binaire dans le format interne de la machine. Il y a des exceptions, et les gros IBM supportent des représentations en binaire, en décimal (BCD packé) et en hexadécimal (les flottants natifs), mais les normes C et C++ exigent même que les entiers se comporte « comme si » ils étaient binaires.
Ce qui prète à confusion (et c'est probablement ce qui motive ton posting), c'est que ce format binaire-là n'est pas du texte. Or que habituellement, quand on parle des formats décimaux ou hexadécimaux, on parle de texte (à moins de faire du Cobol sur un gros IBM). Alors, il y a des formats qui se basent sur des caractères « imprimables », et des formats qui se basent sur les bits internes de la machine. On peut avoir un format binaire dans les deux cas, mais ça ne serait pas la même chose.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Pierre Maurette wrote:
Existe-il des méthodes pour manipuler des nombres binaire? Je
voudrais une méthode pour convertir un char * ou un nombre en
nombre binaire, et l'inverse (qui convertit un nombre binaire
en chiffre ou char *). Par char * j'entends les mots (comme
"bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas
comment faire pour convertir un mot en nombre binaire. (A
partir du code ascii?). Mais
Un nombre binaire n'existe pas. C'est la représentation d'un
nombre (c'est à dire pour C et C++ une chaîne de caractère)
qui peut être binaire, octal, décimale ou hexadécimale.
Autant dire qu'un nombre n'existe pas. Les nombres sont
normalement représentés en binaire dans le format interne de la
machine. Il y a des exceptions, et les gros IBM supportent des
représentations en binaire, en décimal (BCD packé) et en
hexadécimal (les flottants natifs), mais les normes C et C++
exigent même que les entiers se comporte « comme si » ils
étaient binaires.
Ce qui prète à confusion (et c'est probablement ce qui motive
ton posting), c'est que ce format binaire-là n'est pas du texte.
Or que habituellement, quand on parle des formats décimaux ou
hexadécimaux, on parle de texte (à moins de faire du Cobol sur
un gros IBM). Alors, il y a des formats qui se basent sur des
caractères « imprimables », et des formats qui se basent sur les
bits internes de la machine. On peut avoir un format binaire
dans les deux cas, mais ça ne serait pas la même chose.
--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une méthode pour convertir un char * ou un nombre en nombre binaire, et l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char * j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour convertir un mot en nombre binaire. (A partir du code ascii?). Mais
Un nombre binaire n'existe pas. C'est la représentation d'un nombre (c'est à dire pour C et C++ une chaîne de caractère) qui peut être binaire, octal, décimale ou hexadécimale.
Autant dire qu'un nombre n'existe pas. Les nombres sont normalement représentés en binaire dans le format interne de la machine. Il y a des exceptions, et les gros IBM supportent des représentations en binaire, en décimal (BCD packé) et en hexadécimal (les flottants natifs), mais les normes C et C++ exigent même que les entiers se comporte « comme si » ils étaient binaires.
Ce qui prète à confusion (et c'est probablement ce qui motive ton posting), c'est que ce format binaire-là n'est pas du texte. Or que habituellement, quand on parle des formats décimaux ou hexadécimaux, on parle de texte (à moins de faire du Cobol sur un gros IBM). Alors, il y a des formats qui se basent sur des caractères « imprimables », et des formats qui se basent sur les bits internes de la machine. On peut avoir un format binaire dans les deux cas, mais ça ne serait pas la même chose.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
James Kanze
Ivan Vecerina wrote:
"Pascal" wrote in message news:
Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une méthode pour convertir un char * ou un nombre en nombre binaire, et l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char * j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour convertir un mot en nombre binaire. (A partir du code ascii?). Mais comment faire dans ce cas pour différencier un nombre d'un mot?
En C++, la représentation binaire de tout objet, groupée (typiquement) par octets, est accessible en faisant un cast de l'adresse de l'objet en 'unsigned char*'. L'objet peut alors être accédé comme un tableau de 'unsigned char' dont la taille est donnée p.ex. par sizof(objet).
Attention quand même. Si tu as un std::vector<int>, par exemple, une telle procédure ne va pas te donner le binaire des int dans le vecteur.
Pour plus de portabilité (voir problèmes d'"endianness"), il est parfois judicieux d'explicitement convertir par exemple un 'unsigned short' en une séquence d'octets.
J'aurais prèsque dit, il est toujours judicieux, mais on vient d'avoir un exemple où je ne suis pas sûr (le SGDB). N'empèche que la plupart du temps, les temps de « formattage » seront negligeables devant le temps des entrées/sorties.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Ivan Vecerina wrote:
"Pascal" <teapa5@B022-05.fr> wrote in message
news:pan.2005.02.12.13.55.23.293145@B022-05.fr...
Existe-il des méthodes pour manipuler des nombres binaire? Je
voudrais une méthode pour convertir un char * ou un nombre en
nombre binaire, et l'inverse (qui convertit un nombre binaire
en chiffre ou char *). Par char * j'entends les mots (comme
"bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas
comment faire pour convertir un mot en nombre binaire. (A
partir du code ascii?). Mais comment faire dans ce cas pour
différencier un nombre d'un mot?
En C++, la représentation binaire de tout objet, groupée
(typiquement) par octets, est accessible en faisant un cast de
l'adresse de l'objet en 'unsigned char*'. L'objet peut alors
être accédé comme un tableau de 'unsigned char' dont la taille
est donnée p.ex. par sizof(objet).
Attention quand même. Si tu as un std::vector<int>, par exemple,
une telle procédure ne va pas te donner le binaire des int dans
le vecteur.
Pour plus de portabilité (voir problèmes d'"endianness"), il
est parfois judicieux d'explicitement convertir par exemple un
'unsigned short' en une séquence d'octets.
J'aurais prèsque dit, il est toujours judicieux, mais on vient
d'avoir un exemple où je ne suis pas sûr (le SGDB). N'empèche
que la plupart du temps, les temps de « formattage » seront
negligeables devant le temps des entrées/sorties.
--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Existe-il des méthodes pour manipuler des nombres binaire? Je voudrais une méthode pour convertir un char * ou un nombre en nombre binaire, et l'inverse (qui convertit un nombre binaire en chiffre ou char *). Par char * j'entends les mots (comme "bonjour" par exemple).
Je pourrais l'implémenter moi même, mais je ne sais pas comment faire pour convertir un mot en nombre binaire. (A partir du code ascii?). Mais comment faire dans ce cas pour différencier un nombre d'un mot?
En C++, la représentation binaire de tout objet, groupée (typiquement) par octets, est accessible en faisant un cast de l'adresse de l'objet en 'unsigned char*'. L'objet peut alors être accédé comme un tableau de 'unsigned char' dont la taille est donnée p.ex. par sizof(objet).
Attention quand même. Si tu as un std::vector<int>, par exemple, une telle procédure ne va pas te donner le binaire des int dans le vecteur.
Pour plus de portabilité (voir problèmes d'"endianness"), il est parfois judicieux d'explicitement convertir par exemple un 'unsigned short' en une séquence d'octets.
J'aurais prèsque dit, il est toujours judicieux, mais on vient d'avoir un exemple où je ne suis pas sûr (le SGDB). N'empèche que la plupart du temps, les temps de « formattage » seront negligeables devant le temps des entrées/sorties.
-- James Kanze home: www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34