Wie kann ich 8 Bytes als vorzeichenloses int (Little Endian) 'lesen / interpretieren' ?
Vielleicht gibt es dafür eine magische Bash-Fu-Konvertierung?
UPDATE:
Es scheint, dass bei der Interpretation meiner Frage etwas überkreuzt wurde. Hier ist ein breiteres Beispiel dafür, was ich versuche zu tun.
Ich möchte die ersten (und letzten) 64 KB einer Datei lesen. Jedes 8-Byte-Wort ist als vorzeichenlose 64-Bit-Little-Endian-Ganzzahl zu interpretieren. Diese Ganzzahlen sollen in einer Hashing-Berechnung verwendet werden, die die Datei eindeutig identifiziert. Es müssen also viele Berechnungen durchgeführt werden. ∴ Geschwindigkeit wird bevorzugt, ist aber nicht kritisch. (Warum mache ich das? Weil smplayer
die Namen der INI-Dateien für abgespielte Medien gehasht werden und ich auf diese Dateien zugreifen und sie ändern möchte, ahme ich den C ++ - Code des Smplayers in Bash nach.)
Eine Lösung, die das Akzeptieren einer Piped-Eingabe ermöglicht, wäre optimal und wahrscheinlich aufgrund der Art und Weise, wie Bash-Variablen \ x00 nicht verarbeiten können, von wesentlicher Bedeutung.
Mir ist klar, dass so etwas wahrscheinlich besser für Python, Perl und C / C ++ geeignet ist, aber ich kenne Python und Perl nicht, und obwohl ich es in C ++ tun könnte, ist es Jahre her, seit ich es verwendet habe Ich versuche mich auf Bash zu konzentrieren.
Kurze Perl- und Python-Schnipsel sind gut. Bash wird bevorzugt (aber nicht unter Geschwindigkeitseinbußen).
ö§«¢
sind keine Bytes; Es handelt sich nominell um Unicode-Zeichen, die bei der Codierung in UTF-8 und UTF-32 8 Byte und bei der Codierung in UTF-32 16 Byte verwenden. Wie in Manpages häufig anzutreffen, beziehe ich mich auf 8-Bit-Oktette. Nur ein gewöhnliches 8-Bit-Byte. Ich möchte 8 davon als 64-Bit-Big-Endian-Int