- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 13

Thema: PHP/RPi: 64 bit int-String auf 32bit-Hardware berechnen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Schau mal hier rein, ob das nützlich ist: https://www.php.net/manual/de/function.dechex.php

    // Input: A decimal number as a String.
    // Output: The equivalent hexadecimal number as a String.

    Freundlichen Gruß

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Die Funktion hab ich auch schon versucht, aber die spuckt auch nur 0x7FFFFFFF raus, da der Input eben zu gross ist.
    #ifndef MfG
    #define MfG

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    168598941204504 sind doch niemals die Betriebsstunden des Datenträgers.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Genau das ist ja das Problem an der Sache.

    Umgerechnet in Hex ist der Wert 0x995700000018.
    Und von diesem Wert brauche ich die unteren 32 bit => 0x995700000018 = 24 Stunden.
    Diese 0x9957 oben rum sind "irgendwas" anderes. Keine Ahnung, ob das Sekunden sind, oder Minuten, Mondphase, Stärke vom Erdmagnetfeld, Anzahl Staubfussel aufm Gehäuse.... jedenfalls uninteressant und ohne erkennbares Muster, scheinbar völlig random.

    Und Smartctl checkt das nicht, dass das da nicht dazugehört. Für den ist das der ausgelesene Raw Value.
    #ifndef MfG
    #define MfG

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Was Du bekommst, ist ein wenigstens (angeblich) 48Bit großer Wert. Wenn die oberen Bits davon zufällig und willkürlich wechseln, würde ich von einem Fehler ausgehen. So weit hast Du das wohl auch schon bemerkt. Vermutlich was im Programm. Nächster Schritt für mich wäre, rausfinden, ob es an der neuen Platte liegt. Wäre für mich zwar nicht vorstellbar, aber ich würde nun eins nach dem anderen ausschließen.

    Und ja, recht hast Du, an irgendeiner Stelle komme ich auch mit dem Umwandeln des Strings, aus Dezimalschreibweise, nicht weiter, weil irgendwann die 31 Bit während einer Berechnung überschritten werden. Eins ist vermutlich ein Vorzeichen-Bit.

    MfG

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Gibt es einen Unterschied zwischen "smartctl -A" und "smartctl -a" ?
    Schon sehr alt, aber vielleicht gibt es hier Hinweise, denen man folgen kann.
    Geändert von Moppi (12.10.2021 um 10:53 Uhr)

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Nene das ist kein Fehler.
    Es sind aktuell 14 Platten, und von denen haben das nur die 2 2TB von Seagate; auch alles unterschiedliche Modelle, also kein Serienfehler.
    Alle anderen (Toshiba, Maxtor, WD) haben das Phänomen nicht. Hab auch vorher die Platte mal in Windows mit Speedfan ausgelesen, der liest den gleichen "Mist", nur eben brav als Hex. Aber der sieht den Wert auch unendlich hoch und die Festplatte damit als "uralt".

    -A filtert die Ausgabe, so dass nur die Smart-Werte in der Tabelle ausgegeben werden.
    Der Header fehlt dabei (also keine Disk-s/n, Modell, Firmware, etc.)

    -a beinhaltet -A und noch bisschen was anderes (Health check, Capabilities, Fehlerausgaben, falls Fehler vorhanden)


    Aber der Tipp mit dem Link war genial! Die Ausgabe in Minuten, Halbe Stunden etc. versagt halt zwar total, weil der gelesene Wert einfach Mist ist, ABER:
    Ich kann die Ausgabe des Wertes als hex erzwingen mit "-v 9,hex48"; was komischerweise in meiner manpage nicht drinsteht.
    Da heissts nur "Note that the printed output of smartctl displays numerical values in base 10 (decimal).", also kein Wort davon, dass das hex auch könnte.
    Wundert mich etwas, da der Beitrag ja deutlich älter ist, als "meine" Version von smartctl.

    Da hol ich mir dann einfach mit substr die hinteren 8 "Ziffern", hexdec, und fertig.

    Jetzt schauen die Ausgaben nach was aus. Oben mit den noch fehlerhaften Werten, unten die richtigen Werte über Hex:
    Klicke auf die Grafik für eine größere Ansicht

Name:	hddstatus.jpg
Hits:	5
Größe:	130,2 KB
ID:	35617

    DAS war der perfekte Tip! Merci!
    Der Wert mit den 36013 Stunden stimmt übrigens, die Platte hat schon einiges hinter sich.

    MfG
    Stefan
    Geändert von Jaecko (12.10.2021 um 12:15 Uhr)
    #ifndef MfG
    #define MfG

Ähnliche Themen

  1. 32Bit Zahl in BCD umwandeln
    Von rogerberglen im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 30.01.2013, 18:01
  2. 32bit Multiplizierer - Was bedeutet die 32?
    Von Asuroneuling im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 11.02.2010, 11:33
  3. string an lcd senden, string in pointer speichern
    Von andi.studi im Forum PIC Controller
    Antworten: 15
    Letzter Beitrag: 13.08.2008, 23:51
  4. 32bit Schieberegister Ansteuerung...Wo ist der Fehler?
    Von KonZ im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 21.09.2007, 08:27
  5. String auf String zuweisen geht nicht
    Von Jaecko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 14.12.2006, 17:48

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests