 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Michael Reichlin Guest
|
Posted: Fri Sep 17, 2004 11:57 am Post subject: hex in bin |
|
|
Hallo zusammen
ich habe eine kleine Frage. Gibt es einen Befehl der mir eine Hexzahl in
binär umwandelt? Ich habe 18 Byte die ich in einer Tabelle darstelle (MFC).
Jetzt möchte ich die einzelnen Byte auch noch in Bits darstellen, da ich auf
einzelne Events reagieren möchte, die durch Bits ausgelöst werden!Die
einzelnen Bits möchte ich dann in einzelne Spalten schreiben.
Vielen Dank für eure Hilfe
Mfg
Michael
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Karl Heinz Buchegger Guest
|
Posted: Fri Sep 17, 2004 3:20 pm Post subject: Re: hex in bin |
|
|
Michael Reichlin wrote:
| Quote: |
Hallo zusammen
ich habe eine kleine Frage. Gibt es einen Befehl der mir eine Hexzahl in
binär umwandelt? Ich habe 18 Byte die ich in einer Tabelle darstelle (MFC).
Jetzt möchte ich die einzelnen Byte auch noch in Bits darstellen, da ich auf
einzelne Events reagieren möchte, die durch Bits ausgelöst werden!Die
einzelnen Bits möchte ich dann in einzelne Spalten schreiben.
|
Zuerst mal sollten wir ein Missverstaendniss ausraeumen.
Im Rechner gibt es keine Hexzahlen, genau so wenig wie
es Dezimalzahlen gibt. Im Rechner ist alles binaer. Was
Du *siehst* ist lediglich, dass diese Binaerzahl *bei der
Anzeige* einmal als Dezimalzahl oder als Hexzahl *formatiert*
ausgegeben wird.
Damit muss Deine Frage lauten: Gibt es eine Moeglichkeit
die *Ausgabe* eines int oder unsigned int oder was_auch_immer
so umzudrehen, dass die *Ausgabe* in binaer erfolgt.
Und die Antwort ist: Direkt gibt es sie nicht. Du musst da
selbst was machen.
Das Einfachste in C++ ist es, dafuer die Klasse std::bitset
herzunehmen. Die ist genau dafuer gedacht einen Haufen
von Bits zu sammeln und auch als Bits zu bearbeiten.
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
std::bitset<16> BitSet;
BitSet = 5;
cout << BitSet << endl; // gibt die Binaerdarstellung von 5 aus
}
Die 16 geben zB an, das ich ein std::bitset mit 16 bits haben
will.
--
Karl Heinz Buchegger
[email]kbuchegg (AT) gascad (DOT) at[/email]
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Hendrik Sattler Guest
|
Posted: Fri Sep 17, 2004 3:41 pm Post subject: Re: hex in bin |
|
|
Michael Reichlin wrote:
| Quote: | Hallo zusammen
ich habe eine kleine Frage. Gibt es einen Befehl der mir eine Hexzahl in
binär umwandelt? Ich habe 18 Byte die ich in einer Tabelle darstelle
(MFC). Jetzt möchte ich die einzelnen Byte auch noch in Bits darstellen,
da ich auf einzelne Events reagieren möchte, die durch Bits ausgelöst
werden!Die einzelnen Bits möchte ich dann in einzelne Spalten schreiben.
|
------------------------snip----------------------
#include <iostream>
#include <iomanip>
int main () {
int hexzahl = 100;
std::cout << std::setbase(6) << hexzahl << std::endl;
}
------------------------snip----------------------
Nach Stroustrup, Seite 679 sollte das gehen (Zitat:"Integer zur Basis b
ausgeben"), allerdings tut das nicht mit allen Werten. Weiß jemand, warum?
Bleiben noch zwei for-Schleifen und ein wenig Bit-Shifting...
HS
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Hendrik Sattler Guest
|
Posted: Fri Sep 17, 2004 5:02 pm Post subject: Re: hex in bin |
|
|
Hendrik Sattler wrote:
| Quote: | std::cout << std::setbase(6) << hexzahl << std::endl;
|
Die 6 soll nat. ne 2 sein :-/
HS
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Hendrik Sattler Guest
|
Posted: Fri Sep 17, 2004 5:48 pm Post subject: Re: hex in bin |
|
|
Stefan Ram wrote:
| Quote: | Hendrik Sattler <sattler2000 (AT) gmx (DOT) de> writes:
std::cout << std::setbase(6) << hexzahl << std::endl;
Die 6 soll nat. ne 2 sein :-/
8, 10 oder 16 sind dort möglich.
|
Schon klar, aber warum nur diese? Ein wenig inkonsequent, oder nicht?
HS
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Hendrik Sattler Guest
|
Posted: Fri Sep 17, 2004 6:58 pm Post subject: Re: hex in bin |
|
|
Stefan Ram wrote:
| Quote: | Hendrik Sattler <sattler2000 (AT) gmx (DOT) de> writes:
Die 6 soll nat. ne 2 sein :-/
8, 10 oder 16 sind dort möglich.
Schon klar, aber warum nur diese?
Weil diese Fáhigkeiten der C++-Standardbibliothek durch
zugrundeliegende Fähigkeiten der C-Standardbibliothek
dargestellt oder verwirklicht werden und es dort die
Merkzeichen "o", "d" und "X" von fprintf gibt.
|
LOL, das könnte ein Grund sein.
Warum kann fprintf keine Binärdarstellung? *fg* Nein, die Frage muß nicht
beantwortet werden.
HS
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Horst Kraemer Guest
|
Posted: Fri Sep 17, 2004 7:37 pm Post subject: Re: hex in bin |
|
|
Hendrik Sattler <sattler2000 (AT) gmx (DOT) de> wrote:
| Quote: | Stefan Ram wrote:
Hendrik Sattler <sattler2000 (AT) gmx (DOT) de> writes:
Die 6 soll nat. ne 2 sein :-/
8, 10 oder 16 sind dort möglich.
Schon klar, aber warum nur diese?
Weil diese Fáhigkeiten der C++-Standardbibliothek durch
zugrundeliegende Fähigkeiten der C-Standardbibliothek
dargestellt oder verwirklicht werden und es dort die
Merkzeichen "o", "d" und "X" von fprintf gibt.
LOL, das könnte ein Grund sein.
Warum kann fprintf keine Binärdarstellung? *fg* Nein, die Frage muß nicht
beantwortet werden.
|
fprintf kann keine Binaerdarstellung, weil dafuer kein Bedarf besteht.
Wer binaer denkt, schreibt hex, weil's Platz spart.
Binaerausgabe/eingabe ist was fuer Warmduscher ;-)
--
Horst
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Torsten Karwoth Guest
|
Posted: Fri Sep 17, 2004 8:51 pm Post subject: Re: hex in bin |
|
|
Michael Reichlin wrote:
| Quote: | Hallo zusammen
ich habe eine kleine Frage. Gibt es einen Befehl der mir eine Hexzahl in
binär umwandelt? Ich habe 18 Byte die ich in einer Tabelle darstelle
(MFC). Jetzt möchte ich die einzelnen Byte auch noch in Bits darstellen,
da ich auf einzelne Events reagieren möchte, die durch Bits ausgelöst
werden!Die einzelnen Bits möchte ich dann in einzelne Spalten schreiben.
|
Mal schauen, von wem ich jetzt erschlagen werde:
(Ungetestet):
snprintf(buf,sizeof(buf)," %c | %c | %c | %c |%c | %c | %c | %c",
(value &128) ? '1':'0',
(value & 64) ? '1':'0',
(value & 32) ? '1':'0',
(value & 16) ? '1':'0',
(value & ? '1':'0',
(value & 4) ? '1':'0',
(value & 2) ? '1':'0',
(value & 1) ? '1':'0');
*duck*
Torsten
--
Vorsicht: Meine eMail-Adresse ist replyfähig. Mails mit HTML werden
allerdings automatisch gelöscht. Also Plain-Text oder bleiben lassen.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Simon Krahnke Guest
|
Posted: Sat Sep 18, 2004 2:14 pm Post subject: Re: hex in bin |
|
|
* Torsten Karwoth <agonizer (AT) gmx (DOT) de> (22:51) schrieb:
| Quote: | snprintf(buf,sizeof(buf)," %c | %c | %c | %c |%c | %c | %c | %c",
(value &128) ? '1':'0',
(value & 64) ? '1':'0',
(value & 32) ? '1':'0',
(value & 16) ? '1':'0',
(value & ? '1':'0',
(value & 4) ? '1':'0',
(value & 2) ? '1':'0',
(value & 1) ? '1':'0');
|
(char) (!!(value & x) + '0')
mfg, simon .... :-)
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Simon Krahnke Guest
|
Posted: Sat Sep 18, 2004 2:21 pm Post subject: Re: hex in bin |
|
|
* Torsten Karwoth <agonizer (AT) gmx (DOT) de> (22:51) schrieb:
| Quote: | snprintf(buf,sizeof(buf)," %c | %c | %c | %c |%c | %c | %c | %c",
(value &128) ? '1':'0',
(value & 64) ? '1':'0',
(value & 32) ? '1':'0',
(value & 16) ? '1':'0',
(value & ? '1':'0',
(value & 4) ? '1':'0',
(value & 2) ? '1':'0',
(value & 1) ? '1':'0');
|
Oder (char) (((value >> x) & 1) + '0') bei x = 0 .. 7
mfg, simon .... :-)
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Marcel Müller Guest
|
Posted: Sat Sep 18, 2004 7:22 pm Post subject: Re: hex in bin |
|
|
Michael Reichlin wrote:
| Quote: | ich habe eine kleine Frage. Gibt es einen Befehl der mir eine Hexzahl in
binär umwandelt? Ich habe 18 Byte die ich in einer Tabelle darstelle (MFC).
Jetzt möchte ich die einzelnen Byte auch noch in Bits darstellen, da ich auf
einzelne Events reagieren möchte, die durch Bits ausgelöst werden!Die
einzelnen Bits möchte ich dann in einzelne Spalten schreiben.
|
Wie wär's mit der klassischen Methode mit lookup-table?
#include <algorithm>
const char* const char2bintab[16] =
{ "0000", "0001", "0010", "0011",
"0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011",
"1100", "1101", "1110", "1111"
};
void writebin(ostream& os, const string& s)
{ for (string::const_iterator si = s.begin(); si != s.end(); ++si)
os << char2bintab[*si >> 4] << char2bintab[*si & 15];
}
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Dirk Clemens Guest
|
Posted: Sun Sep 19, 2004 9:34 pm Post subject: Re: hex in bin |
|
|
Simon Krahnke wrote:
| Quote: | * Torsten Karwoth <agonizer (AT) gmx (DOT) de> (22:51) schrieb:
snprintf(buf,sizeof(buf)," %c | %c | %c | %c |%c | %c | %c | %c",
(value &128) ? '1':'0',
(value & 64) ? '1':'0',
(value & 32) ? '1':'0',
(value & 16) ? '1':'0',
(value & ? '1':'0',
(value & 4) ? '1':'0',
(value & 2) ? '1':'0',
(value & 1) ? '1':'0');
(char) (!!(value & x) + '0')
|
Warum das (char) davor?
Wird doch sowieso wieder in int gewandelt.
Lemmi
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Andreas Huennebeck Guest
|
Posted: Mon Sep 20, 2004 7:31 am Post subject: Re: hex in bin |
|
|
Michael Reichlin wrote:
| Quote: | ich habe eine kleine Frage. Gibt es einen Befehl der mir eine Hexzahl in
binär umwandelt? Ich habe 18 Byte die ich in einer Tabelle darstelle
(MFC). Jetzt möchte ich die einzelnen Byte auch noch in Bits darstellen,
da ich auf einzelne Events reagieren möchte, die durch Bits ausgelöst
werden!Die einzelnen Bits möchte ich dann in einzelne Spalten schreiben.
|
eine alte C-Loesung:
#define BITS 18
char buf(BITS+1);
int k = BITS-1;
int i;
for (i=0, i
buf[k] = (hexzahl & (1 << i)) ? '1' : '0';
buf[BITS] = ' ';
Tschau
Andreas
--
Andreas Hünnebeck | email: [email]ah (AT) despammed (DOT) com[/email]
----- privat ---- | www : http://www.huennebeck-online.de
Fax/Anrufbeantworter: 0721/151-284301
GPG-Key: http://www.huennebeck-online.de/public_keys/andreas.asc
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Markus Pesti Guest
|
Posted: Mon Sep 20, 2004 9:51 am Post subject: Re: hex in bin |
|
|
"Michael Reichlin" <michael.reichlin (AT) de (DOT) bosch.com> wrote:
| Quote: | Hallo zusammen
ich habe eine kleine Frage. Gibt es einen Befehl der mir eine Hexzahl
in binär umwandelt? Ich habe 18 Byte die ich in einer Tabelle
darstelle (MFC). Jetzt möchte ich die einzelnen Byte auch noch in Bits
darstellen, da ich auf einzelne Events reagieren möchte, die durch
Bits ausgelöst werden!Die einzelnen Bits möchte ich dann in einzelne
Spalten schreiben.
Vielen Dank für eure Hilfe
Mfg
Michael
|
Noch ein Vorschlag:
#include <iostream>
int main()
{
int n;
std::cout << "n = ";
std::cin >> n;
for(int i=17; i>=0; i--)
std::cout << int(bool(n & (1 << i)));
std::cout << std::endl;
}
unter der Voraussetzung daß int(true) == 1 ist.
Markus
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Simon Krahnke Guest
|
Posted: Mon Sep 20, 2004 2:29 pm Post subject: Re: hex in bin |
|
|
* Dirk Clemens <web-dc (AT) ftb-net (DOT) de> (23:34) schrieb:
| Quote: | Simon Krahnke wrote:
* Torsten Karwoth <agonizer (AT) gmx (DOT) de> (22:51) schrieb:
snprintf(buf,sizeof(buf)," %c | %c | %c | %c |%c | %c | %c | %c",
(value &128) ? '1':'0',
(value & 64) ? '1':'0',
(value & 32) ? '1':'0',
(value & 16) ? '1':'0',
(value & ? '1':'0',
(value & 4) ? '1':'0',
(value & 2) ? '1':'0',
(value & 1) ? '1':'0');
(char) (!!(value & x) + '0')
Warum das (char) davor?
|
Keine Ahnung, Verwirrung. :-)
| Quote: | Wird doch sowieso wieder in int gewandelt.
|
Eben.
mfg, simon .... l
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|