C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

hex in bin

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Michael Reichlin
Guest





PostPosted: Fri Sep 17, 2004 11:57 am    Post subject: hex in bin Reply with 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

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





PostPosted: Fri Sep 17, 2004 3:20 pm    Post subject: Re: hex in bin Reply with quote



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





PostPosted: Fri Sep 17, 2004 3:41 pm    Post subject: Re: hex in bin Reply with quote



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





PostPosted: Fri Sep 17, 2004 5:02 pm    Post subject: Re: hex in bin Reply with quote

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





PostPosted: Fri Sep 17, 2004 5:48 pm    Post subject: Re: hex in bin Reply with quote

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





PostPosted: Fri Sep 17, 2004 6:58 pm    Post subject: Re: hex in bin Reply with quote

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





PostPosted: Fri Sep 17, 2004 7:37 pm    Post subject: Re: hex in bin Reply with quote

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





PostPosted: Fri Sep 17, 2004 8:51 pm    Post subject: Re: hex in bin Reply with quote

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 & Cool ? '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





PostPosted: Sat Sep 18, 2004 2:14 pm    Post subject: Re: hex in bin Reply with quote

* 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 & Cool ? '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





PostPosted: Sat Sep 18, 2004 2:21 pm    Post subject: Re: hex in bin Reply with quote

* 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 & Cool ? '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





PostPosted: Sat Sep 18, 2004 7:22 pm    Post subject: Re: hex in bin Reply with quote

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





PostPosted: Sun Sep 19, 2004 9:34 pm    Post subject: Re: hex in bin Reply with quote

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 & Cool ? '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





PostPosted: Mon Sep 20, 2004 7:31 am    Post subject: Re: hex in bin Reply with quote

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





PostPosted: Mon Sep 20, 2004 9:51 am    Post subject: Re: hex in bin Reply with quote

"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





PostPosted: Mon Sep 20, 2004 2:29 pm    Post subject: Re: hex in bin Reply with quote

* 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 & Cool ? '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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.