Seite 1 von 1
Hexzahl als String
Verfasst: Montag 15. August 2005, 10:38
von antimicro
Hi,
hat einer eine Antwort auf folgendes Problemchen?
Um eine Prüfsumme zu berechnen muss ich mehrere Zahlen (Hex) byteweise addieren. Die Hexzahlen habe ich allerdings als Integer. Was mit byteweise Addition gemeint ist kann ich am besten anhand eines Beispiels erklären:
0x90 und 0x06 => 0x96
jetzt möchte ich die Zahlen von 0x90 in "0x90" (Integer -> String) umwandeln um dann die einzelnen Stellen zu addieren. Hat da jemand eine Idee oder gibts da was Eleganteres?
Dank im Voraus!
edit: kleiner Rechtschreibfehler
Verfasst: Montag 15. August 2005, 10:50
von CM
Wo genau ist das Problem? Wieso geht das
nicht?
Gruß,
Christian
Verfasst: Montag 15. August 2005, 11:06
von rayo
mhhh vielleicht meint er
also ne or-verknüpfung
Gruss
Verfasst: Montag 15. August 2005, 11:10
von CM
Hm, kann natürlich auch sein - aber auch dafür muß man nicht in einen String umwandeln. Also, antimicro, kannst Du uns vielleicht noch auf die Sprünge helfen? Oder hat rayo gut geraten?
Gruß,
Christian
Verfasst: Montag 15. August 2005, 14:04
von Joghurt
Vielleicht meint er auch BCDs?
0x99 + 0x05 = 0x104
Also, antimicro, dein Input ist gefragt!
Verfasst: Montag 15. August 2005, 14:25
von antimicro
Eigentlich ganz einfach...
die Zahlen 0x54 und 0x43 und 0x32 möchte ich 'byteweise addieren'.
0x54
0x43
0x32
dann zähle ich 0x4+0x3+0x2 = 0x9
und zum Schluss 0x9 + 0x50 + 0x40 + 0x30 = C9
dann ist mein Ergebnis 0xC909, alles klar?
Verfasst: Montag 15. August 2005, 16:52
von rayo
ne jetzt bin ich komplett verwirrt
die Zahlen 0x54 und 0x43 und 0x32 möchte ich 'byteweise addieren'.
0x54
0x43
0x32
dann zähle ich 0x4+0x3+0x2 = 0x9
und zum Schluss 0x9 + 0x50 + 0x40 + 0x30 = C9
bis hierhin ok.
dann ist mein Ergebnis 0xC909, alles klar?
woher kommt 0x..09, von der ersten berechung?
so wäre die berechnung, aber ich seh keinen sinn dahinter.
Code: Alles auswählen
tmp = 0x54+0x43+0x32
erstes = tmp&0x0F
zeites = tmp
resultat = (zweites<<8)+erstes
gruss
Verfasst: Montag 15. August 2005, 23:09
von BlackJack
Vielleicht hilft folgendes: Hex-, Dezimal und römische Zahlen sind einfach nur Darstellungen von ganzen Zahlen. Ob Du die Zahlen als Hex, Dezimal oder römisch hinschreibst und addierst ändert nichts am Ergebnis.
Wenn das Ergebnis einfach nur die Summe aller Zahlen auf ein Byte, also einen Wert zwischen 0 und 255 beschränt, sein soll, dann tut's folgendes:
Verfasst: Dienstag 16. August 2005, 07:31
von antimicro
Hi,
das von rayo is es. Verstanden hab ich es zwar noch nicht, aber es funktioniert

vielen dank.
Das ist für eine 16bit Prüfsumme. Ich verstehe das auch noch nicht warum da nicht z.B. CRC16 benutzt wird. Ach ja....

Verfasst: Dienstag 16. August 2005, 16:56
von Joghurt
antimicro hat geschrieben:Hi,
das von rayo is es. Verstanden hab ich es zwar noch nicht, aber es funktioniert

vielen dank.
Das ist für eine 16bit Prüfsumme. Ich verstehe das auch noch nicht warum da nicht z.B. CRC16 benutzt wird. Ach ja....

Ein
Byte = 8 Bit = 2 Hexadezimalstellen.
Was du meintest, war 1 Hexadezimalstelle, also 4 Bits, die heißen
Nibble (oder Nybble), nicht Byte!