028
16.01.2005, 23:47 Uhr
Hans
Library Walker (Operator)
|
Hi,
Zitat von Diablo: |
jaa komischer term! der addiert nur die zahlen das ergebnis ist 10, wenn die bytes 37 und 33 sind!
|
das ist ja auch die Quersumme von 37 bzw. 73. Oder was verstehst Du unter einer Quersumme?
Was den oben genannten Tipp angeht, hier mal ein Demoprogramm, mit einer Funktion zur Zahlenumwandlung:
C++: |
#include <iostream.h> #include <stdio.h> #include <ctype.h>
/* Funktionsprototyp */ unsigned uzahl(char *s, int l);
int main() { char zahlstring[12]; unsigned zahl; int i; cout << "Bitte eine Zahl eingeben: "; cin >> zahlstring; i=0; while (i<12) // Hier wird die Anzahl der Ziffern in zahlstring festgestellt { if (isdigit(zahlstring[i])) i++; else break; } cout << "Hexdarstellung der Eingabe: "; for (int t=0; t<i; t++) printf ("%02x ", zahlstring[t]); // Da ich gerade keine Ahnug hab, wie man printf ("\n"); // das in C++ macht, nehm ich C-Variante... zahl = uzahl(zahlstring, i); cout << "Ergebnis: " << zahl; return 0; }
unsigned uzahl(char *s, int l) { unsigned z=0; int i; int basis=10; for (i=0; i<l; i++) { if (!isdigit(s[i])) return 0; z = basis * z + (s[i]-'0'); } return z; } /* uzahl */
|
Die Sache funktioniert so: Man setzt eine Variable z auf 0 (Zahlwert Null), und baut in dieser Variablen anschliessend die Zahl zusammen, die durch die ASCII-Codes repräsentiert werden. Dazu wird von den ASCII-Codes wird jeweils 0x30 abgezogen, der auch der ASCII-Code der Ziffer Null ist. Dann multipliziert man die Zahl z mit 10 (Basis) und addiert den Wert, den man aus dem ASCII-code erhalten hat dazu. Dem ganzen liegt die Überlegung zugrunde, das man eine Zahl 53281 auch so darstellen kann:
Code: |
12345 = 5*10^4 + 3*10^3 + 2*10^2 + 8*10^1 + 1*10^0
|
Wichtig: 10^x bedeutet hier 10 hoch x, aber nicht 10 XOR x.
Wenn Du jetzt nur "Bahnhof" verstanden hast, ist das nicht weiter tragisch: Die Art der Zahlendarstellung kannst Du auch in Informatikbüchern nachlesen. Warum die Funktion zur Zahlenumwandlung so funktioniert, wie sie es tut, steht auch hier im Forum irgendwo noch ausführlicher beschrieben, wenn ich mich nicht irre.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |