Division von Arrays binär
-
Hallo zusammen
Ich bin auf der such nach einer Methode wie man einen unsigned char array, 6 Byte (Ganzzahl) ,durch 1000 dividieren kann.
Habe keinen 8 Byte Datentyp zur Verfügung.
Durch die Divison durch 1000 passt der Wert wieder in einen Integer.Gruss
-
1024 geht nicht?
-
Das wäre die einfachste Variante.
Aber es sollte genau gerechnet werden, da ich den Wert mit localtime auflösen muss. Daher ist 1024 keine Option.
-
Du machst es wie bei der schriftlichen Division, die du in der Grundschule gelernt hast, außer dass du statt Dezimalziffern Bytes nimmst:
#include <stdio.h> #ifdef _WIN32 #ifdef __CYGWIN__ #define FMT64 "%llu" #else #define FMT64 "%I64u" #endif #else #define FMT64 "%llu" #endif unsigned char arr[] = {0x12,0x34,0x56,0x78,0x89,0x01,0,0}; int main ( void ) { unsigned divisor = 1000; unsigned quotient = 0; unsigned rest = 0; for (int i=5; i>=0; --i) { unsigned char* ziffer = &arr[i]; unsigned dividend = (rest << 8) | *ziffer; unsigned q = dividend / divisor; quotient = (quotient << 8) | q; rest = dividend % divisor; } long long * ll = (long long *) arr; printf (FMT64 " / %u = %u Rest=%u\n",*ll, divisor,quotient,rest); return 0; }
viele grüße
ralph
-
Besten Dank
funktioniert wunderbar