Verhexung der Dateigröße


2

Ich verfolge ein Tutorial über einige Kernel-Entwickler. Ich bin auf eine Operation gestoßen, bei der ich ddgerne benutzen muss

dd ... if=PBL.bin of=... count=block_number

Die block_numberVariable ist definiert als

The HEX of ($filesize - 1)/512 + 1

wo $filesizeist die Dateigröße der Eingabedatei PBL.binwie im ddobigen Befehl angegeben.

Wie berechne ich diesen Wert? Danke im Voraus


1
Beachten Sie, dass ddauch Dezimalzahlen akzeptiert werden count=. Fügen Sie auch einen Link zum Tutorial hinzu, damit wir sehen können, wo dies auftritt.
Dan D.

1
Stellen Sie sicher , dass Sie signierte Integer - Arithmetik mit dieser Formel. (-:
JdeBP

Antworten:


2

Wie wäre es mit:

printf "%x" `stat -c "%b" PBL.bin`

printf druckt die Ausgabe von stat im Hex-Format (% x), wobei nur die Anzahl der zugewiesenen Blöcke (% b) der Datei angefordert wird.

Wenn Sie der Anzahl der von stat angegebenen Blöcke nicht vertrauen, gehen Sie wie folgt vor:

printf "%x" $(( (`stat -c "%s" PBL.bin ` - 1) / 512 + 1))

Sie erhalten also die Dateigröße und rechnen dann von Hand


1

Ich unterstütze die Tatsache, dass als Dezimalzahl ddakzeptiert count. Wie auch immer, hier ist der Perl-Weg, um das zu bekommen, wonach Sie fragen:

perl -e 'printf ("%x\n", -s "PBL.bin")'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.