Hexadezimal zu Dezimal umrechnen...Geht dass ohne Funktionen.. Und wenn ja, dann wie?

...komplette Frage anzeigen

7 Antworten

Kannst du nach dem hex horner schema machen. Allerdings musst du wenn buchstaben zb wie "FF" im hexcode sinf die erstmal zu zahlen umwandeln. Am bestem via str_replace und ner liste

Antwort bewerten Vielen Dank für Deine Bewertung

beides sind stellenwertsysteme. damit löst sich das problem praktisch von alleine. dein programm geht einfach alle ziffern von rechts nach links durch. und addiert den wert der stellen.

beispiel: 185 = 5x1 + 8x10 + 1*100 oder verallgemeinert:

5 mal (n hoch 0) + 8 mal (n hoch 1) + 1 mal (n hoch 2)

wobei n die basis des stellenwertsystems ist. die verallgemeinerung funktioniert also auch beim binärsystem. ein binäres 1011 wäre demnach...

1 mal (2^0) plus 1 mal (2^1) plus 0 mal (2^2) plus 1 mal (1^3)  also:

1x1 + 1x2 + 0x4 + 1x8   also elf.

das in einen algorithmus zu überführen dürfte ein kinderspiel sein.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von RakonDark
09.11.2016, 07:25

genau so wirds gemacht .

1
Kommentar von eddiepoole
09.11.2016, 07:37

für die "ziffern" a bis f solltest du einen filter in form einer selbstefinierten funktion schreiben. das ist am übersichtlichsten und leserlichsten.

0

TheSimpleClub auf YouTube, die haben da was drüber

Antwort bewerten Vielen Dank für Deine Bewertung

Was meinst du mit "keine Funktion verwenden"? Irgendeine Abbildungsvorschrift wirst du ja brauchen...

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von TummiTM
09.11.2016, 00:03

Naja mein lehrer meinte das es in PHP halt direkte funktionen gibt also vordefinierte..  Diese dürfen wir nicht nutzen. 

0
Kommentar von eddiepoole
09.11.2016, 07:39

DIE funktion, die genau das macht, darf man natürlich nicht benutzen. aber substr() darf man sicher einsetzen.

0


result = 0;
hex = 16;
for (izeichen = 0 ; izeichen < zeichen.length ; ++izeichen)
{
zahl = 0;
if (ascii(zeichen[izeichen] ) > 47 AND  ascii(zeichen[izeichen] ) < 58)
{
zahl = ascii(zeichen[izeichen] ) - 47  ;
}
else
{
zahl = ascii(upper(zeichen[izeichen]))-55 ;
}
result += zahl* ( hex ^ (zeichen.length - izeichen +1) );
}

// finaly the result in result :)



musst nur noch ins java übersetzen .

ich hoffe das man die schleife nicht umdrehen muss .


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von RakonDark
09.11.2016, 08:56

ups kleiner fehler

result += zahl* ( hex ^ (zeichen.length - (izeichen +1)) );
0

Was möchtest Du wissen?