Nachdem Du sagst "üblicherweise" und nachdem du das so souverän gelöst hast - wo hattest du mit solchen Multiplikatoren bereits zu tun?
Eine meiner Haupttätigkeiten im Beruf ist die Programmierung in C++. Und wenn Du mich dann fragst 'wo hattest du mit solchen Multiplikatoren bereits zu tun?', dann ist das etwa dasselbe, als ob Du einen Tischler fragst, wo er schon mal was mit Hammer und Nägeln zu tun hatte.
Da das EEPROM mit 8-Bit Werten (0-255) rechnet, lassen sich größere Zahlen nur mittels solcher Berechnungsfunktionen abbilden.
das ist weniger eine Frage des EEPROM, weil das rechnet sicher rein gar nicht, sondern der verfügbaren Möglichkeit dasselbe zu schreiben und zu lesen. Das wiederum hängt i.A. an der verwendeten Programmiersprache ab.
Die Funktion dazu ist hier zu finden: Siehe "Mileage of engine control unit"
Und die Programmiersprache, die hier verwendet wird, ist offensichtlich C. In den Funktionen getKM wird ein 4-Byte-Integer im sogenannten Big-Endian-Format aus dem Speicher gelesen. Wenn das Endian im EEPROM mit dem Endian der Plattform, auf der der Code läuft, übereinstimmen würde, könnte man die Funktion schreiben als
unsigned long getKM_1()
{
return *((unsigned long*)(dump+0x502));
}
damit wird der unsigned long einfach auf den Speicher 'gelegt' und gelesen. Setzt aber identische Endiness und eine Byte-Länge des unsigend long von 4 voraus. Und ersteres ist nicht überall gegeben. Z.B. nicht auf Windows-Maschinen.