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 

Konvertierung von sehr grossen Dezimalzahlen nach Hexadezima

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





PostPosted: Tue Apr 06, 2004 9:12 pm    Post subject: Konvertierung von sehr grossen Dezimalzahlen nach Hexadezima Reply with quote



Hi,

ich weiss nicht, ob ich heute einfach zu müde bin, jedenfalls fällt mir
die Lösung nicht ein...

Es geht um folgendes. Ich habe "sehr grosse" Dezimalzahlen, die als
Zeichenkette vorliegen


"123456565778374832678463784637864784965478560468476806580675976"

das soll in in einer hexadezimalen Ziffernstring konvertiert werden,
also z.B.

"7fea443345656567576ffe00055ab4"

(Das ist nur ein Beispiel, der hex string passt nicht wirklich zum dez
string)

Das Problem ist leider, dass diese großen Zahlen in kein 32-Bit oder
64-Bit Integer rein passen. Habe jetzt schon den ganzen Tag gegrübelt,
aber ich kriege es nicht hin ( Jaja, - Schande über mich )


Habt ihr eine Idee?

Gruß, -Hans

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





PostPosted: Wed Apr 07, 2004 11:34 am    Post subject: Re: Konvertierung von sehr grossen Dezimalzahlen nach Hexade Reply with quote



Hans Kiehn wrote:

Quote:
Hi,

ich weiss nicht, ob ich heute einfach zu müde bin, jedenfalls fällt mir
die Lösung nicht ein...

Es geht um folgendes. Ich habe "sehr grosse" Dezimalzahlen, die als
Zeichenkette vorliegen


"123456565778374832678463784637864784965478560468476806580675976"

das soll in in einer hexadezimalen Ziffernstring konvertiert werden,
also z.B.

"7fea443345656567576ffe00055ab4"

(Das ist nur ein Beispiel, der hex string passt nicht wirklich zum dez
string)

Das Problem ist leider, dass diese großen Zahlen in kein 32-Bit oder
64-Bit Integer rein passen. Habe jetzt schon den ganzen Tag gegrübelt,
aber ich kriege es nicht hin ( Jaja, - Schande über mich )


Habt ihr eine Idee?

Gruß, -Hans

Da bieten sich libraries an, die mit beliebig großen Zahlen rechnen können
(z.B. GNU MP big number library)
--
To get my real email adress, remove the two onkas
--
Dipl.-Inform. Hendrik Belitz
Central Institute of Electronics
Research Center Juelich

--
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: Wed Apr 07, 2004 1:02 pm    Post subject: Re: Konvertierung von sehr grossen Dezimalzahlen nach Hexade Reply with quote



Hans Kiehn wrote:
Quote:

Das Problem ist leider, dass diese großen Zahlen in kein 32-Bit oder
64-Bit Integer rein passen. Habe jetzt schon den ganzen Tag gegrübelt,
aber ich kriege es nicht hin ( Jaja, - Schande über mich )

Habt ihr eine Idee?

Der einfachste Weg ist: Besorg dir eine 'big integer library'.
Gibts wie Sand am Meer da draussen und das was Du hier konrekt
davon brauchst (Division) kann jede aus dem Stand heraus.

--
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
Markus Schaaf
Guest





PostPosted: Wed Apr 07, 2004 1:47 pm    Post subject: Re: Konvertierung von sehr grossen Dezimalzahlen nach Hexade Reply with quote

"Karl Heinz Buchegger" <kbuchegg (AT) gascad (DOT) at> schrieb:

Quote:
Der einfachste Weg ist: Besorg dir eine 'big integer library'.
Gibts wie Sand am Meer da draussen und das was Du hier konrekt
davon brauchst (Division) kann jede aus dem Stand heraus.

Division? Ich hätte eher auf Multiplikation und Addition getippt.

--
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
helmut zeisel
Guest





PostPosted: Wed Apr 07, 2004 7:18 pm    Post subject: Re: Konvertierung von sehr grossen Dezimalzahlen nach Hexade Reply with quote

Markus Schaaf wrote:
Quote:
"Karl Heinz Buchegger" <kbuchegg (AT) gascad (DOT) at> schrieb:


Der einfachste Weg ist: Besorg dir eine 'big integer library'.
Gibts wie Sand am Meer da draussen und das was Du hier konrekt
davon brauchst (Division) kann jede aus dem Stand heraus.


Division? Ich hätte eher auf Multiplikation und Addition getippt.

Ich auf Division und Modulo:

#include <string>
#include <iostream>
using namespace std;
int main()
{
char digit[]="0123456789abcdef";
int j;
cout << "j: ";
cin >> j;
string result;
while(j!=0)
{
result = digit[j%16]+result;
j/=16;
}
cout << result << endl;
return 0;
}

--
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
Hans Kiehn
Guest





PostPosted: Thu Apr 08, 2004 12:56 am    Post subject: Re: Konvertierung von sehr grossen Dezimalzahlen nach Hexade Reply with quote

helmut zeisel wrote:
Quote:
Markus Schaaf wrote:

"Karl Heinz Buchegger" <kbuchegg (AT) gascad (DOT) at> schrieb:


Der einfachste Weg ist: Besorg dir eine 'big integer library'.
Gibts wie Sand am Meer da draussen und das was Du hier konrekt
davon brauchst (Division) kann jede aus dem Stand heraus.



Division? Ich hätte eher auf Multiplikation und Addition getippt.


Ich auf Division und Modulo:

#include <string
#include using namespace std;
int main()
{
char digit[]="0123456789abcdef";
int j;
cout << "j: ";
cin >> j;
string result;
while(j!=0)
{
result = digit[j%16]+result;
j/=16;
}
cout << result << endl;
return 0;
}

jaja, ich weiss, hex nach dez ist einfach =Wink


Mittlerweile habe ich eine Lösung. Muss sie noch ein bisschen rund
machen, dann kann ich sie hier vielleich mal posten.

Gruß, -Hans

--
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
Hans Kiehn
Guest





PostPosted: Thu Apr 08, 2004 1:02 am    Post subject: Re: Konvertierung von sehr grossen Dezimalzahlen nach Hexade Reply with quote

Hendrik Belitz wrote:

Quote:
Hans Kiehn wrote:


Hi,

ich weiss nicht, ob ich heute einfach zu müde bin, jedenfalls fällt mir
die Lösung nicht ein...

Es geht um folgendes. Ich habe "sehr grosse" Dezimalzahlen, die als
Zeichenkette vorliegen


"123456565778374832678463784637864784965478560468476806580675976"

das soll in in einer hexadezimalen Ziffernstring konvertiert werden,
also z.B.

"7fea443345656567576ffe00055ab4"

(Das ist nur ein Beispiel, der hex string passt nicht wirklich zum dez
string)

Das Problem ist leider, dass diese großen Zahlen in kein 32-Bit oder
64-Bit Integer rein passen. Habe jetzt schon den ganzen Tag gegrübelt,
aber ich kriege es nicht hin ( Jaja, - Schande über mich )


Habt ihr eine Idee?

Gruß, -Hans


Da bieten sich libraries an, die mit beliebig großen Zahlen rechnen können
(z.B. GNU MP big number library)
Ich würde im Projekt nur sehr ungern weitere Abhängigkeiten von

Bibliotheken und Headerfiles schaffen. Deshalb kommt das wohl nicht in
Frage.

Es gibt ja auch bereits ein kleines Unterprogramm, dass die
Konvertierung erledigt. Leider rechnet es falsch...

Eine kleine lokale Lösung wäre das was ich brauche. Habe es mittlerweile
auch schon hingekriegt, - sieht aber noch sehr hässlich aus.


Gruß, -Hans

--
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: Thu Apr 08, 2004 4:20 pm    Post subject: Re: Konvertierung von sehr grossen Dezimalzahlen nach Hexade Reply with quote

Hans Kiehn wrote:
Quote:

Ich auf Division und Modulo:

#include <string
#include using namespace std;
int main()
{
char digit[]="0123456789abcdef";
int j;
cout << "j: ";
cin >> j;
string result;
while(j!=0)
{
result = digit[j%16]+result;
j/=16;
}
cout << result << endl;
return 0;
}

jaja, ich weiss, hex nach dez ist einfach =Wink

Aehm. Obiges rechnet aber genau in die andere Richtung: dez -> hex
Das Problem ist ja nicht der eigentliche Rechengang. Das Problem
sind deine extrem grossen Zahlen :-)

--
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
helmut zeisel
Guest





PostPosted: Fri Apr 09, 2004 8:39 am    Post subject: Re: Konvertierung von sehr grossen Dezimalzahlen nach Hexade Reply with quote

Hans Kiehn wrote:
Quote:
Hendrik Belitz wrote:

Da bieten sich libraries an, die mit beliebig großen Zahlen rechnen
können
(z.B. GNU MP big number library)

Ich würde im Projekt nur sehr ungern weitere Abhängigkeiten von
Bibliotheken und Headerfiles schaffen. Deshalb kommt das wohl nicht in
Frage.

Es gibt ja auch bereits ein kleines Unterprogramm, dass die
Konvertierung erledigt. Leider rechnet es falsch...

Weil demnaechst Ostern ist - probier das:

#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
const char digit[]="0123456789abcdef";
int value(char c)
{
const char* p=find(digit, digit+sizeof(digit),c);
return p-digit;
}
int main()
{
string j;
cout << "j: ";
cin >> j;
string result;
while(j.size()!=0)
{
string::const_iterator it=j.begin();
string quot;
int carry=value(*it);
while(++it != j.end())
{
carry = carry*10 + value(*it);
quot += digit[carry/16];
carry %= 16;
}
result = digit[carry]+result;
j.swap(quot);
};
cout << result << endl;
return 0;
}

Helmut

--
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
Hans Kiehn
Guest





PostPosted: Sun Apr 11, 2004 12:01 am    Post subject: Re: Konvertierung von sehr grossen Dezimalzahlen nach Hexade Reply with quote

Hallo Helmut,

coole Lösung!

Herzlichen Dank, -Hans

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