Hex in Dezimal
-
Hallo,,
ich habe folgendes in einem BYTE Array:BYTE answer[10]
Inhalt : "00000008"Nun möchte ich die letzten 4 Bytes, also 0008 in eine Dezimal Zahl darstellen.
Wie geht das?
-
Das Thema kam doch erst neulich: strtol() dürfte dafür ausreichen.
-
simcon schrieb:
Nun möchte ich die letzten 4 Bytes, also 0008 in eine Dezimal Zahl darstellen.
ungefähr so...
unsigned long dezimal = 1000*(array[4]-'0') + 100*(array[5]-'0') + 10*(array[6]-'0') + array[7]-'0';
-
Und was mach ich wenn
0020 zurück kommt?
Dann geht das mit insigned long dezimal = .....
nicht mehr
-
Hab vergessen zu sagen, dass das Arry mit Hexwerten ist.
Also 0020 -> 32
0008 -> 8Sorry, war mein fehler.........
-
Guck doch bitte mal in die FAQ bzw. lies einfach den Post von CStoll oben.
Du musst nur das BYTE[] in einen CString kriegen.
-
Das geht nicht.
Dann bekomme ich wieder nur den HexWert.
Ich möchte den DEZIMAL Wert......
-
Ähm... du hast, wenn du das in der FAQ befolgst eine ZAHL.
Wie du dir die anzeigen lässt ist doch dein Ding.
Ob nun Hex, Dez, Oct oder Binär.
Im PC sind eh alles Nullen und Einsen.

-
estartu schrieb:
Du musst nur das BYTE[] in einen CString kriegen.

Nichtmal das ist nötig - BYTE ist afaik ein unsigned char, also kannst du dein Array auch direkt an die Umwandlungsfunktionen übergeben.
-
Wenns Dir um die rein Umwandlung von 4 Bytes in ein z.b. Int, Float, oder Long geht kannst Du dies auch mit einem union machen...
-
CStoll schrieb:
estartu schrieb:
Du musst nur das BYTE[] in einen CString kriegen.

Nichtmal das ist nötig - BYTE ist afaik ein unsigned char, also kannst du dein Array auch direkt an die Umwandlungsfunktionen übergeben.
Okay, dann ist ja gut.

-
simcon schrieb:
Hab vergessen zu sagen, dass das Arry mit Hexwerten ist.
Also 0020 -> 32
0008 -> 8ach so.
na, probier mal diese verrückte funktion:unsigned long readhex (char *hex) { unsigned long r = 0; while (*hex) r = (*hex > 57) ? (r<<4) + (*hex++ & ~0x20) - 55 : (r<<4) + *hex++ - 48; return r; }hexziffern können gross oder klein sein, ist egal (also a ist das selbe wie A)
auf ungültige ziffern wird aber nicht geachtet (z.b. 'G')