Siehe meine Antwort auf diese Frage, die Sie auf Stack Overflow veröffentlicht haben.
Bis auf weiteres angehalten.
Antworten:
14
Es gibt ein printfTool, das die C-Funktion simuliert. Normalerweise ist es so /usr/bin/printf, aber viele Shells implementieren auch integrierte Funktionen. Sie können verwenden %02x, um die Hex-Darstellung eines Zeichens zu erhalten, aber Sie müssen sicherstellen, dass Sie eine Zeichenfolge übergeben, die das Zeichen in einfache Anführungszeichen enthält ( Bearbeiten : Es stellt sich heraus, dass nur ein einfaches Anführungszeichen am Anfang ausreicht):
printf "%%%02x\n""'-"# Outputs %2d
Sie können der Einfachheit halber eine Shell-Funktion erstellen:
Das einzige Problem dabei ist , mit 2-Byte - Zeichen , dessen Code beginnt mit 0. zB hex 'ץ'geben %5e5statt %05e5. Sie sollten den Hauptteil der Funktion in s=printf "%%% 04x" "'$ 1"; echo "%${s%00}"
Nett. Sie können verwenden echo -n, um die Newline am Ende wegzulassen, damit Sie odsie nicht aufheben und in0a
Michael Mrozek
2
xxdist ein Hex-Dump-Dienstprogramm, das als Teil des vim-commonPakets geliefert wird.
Es verfügt über eine praktische -pOption, die einen fortlaufenden Hexdump-Stil "Plain / Postscript" ausgibt. Dies kann problemlos rückgängig gemacht werden, indem -r... -uHex-Ziffern in Großbuchstaben ausgegeben werden.
Antworten:
Es gibt ein
printf
Tool, das die C-Funktion simuliert. Normalerweise ist es so/usr/bin/printf
, aber viele Shells implementieren auch integrierte Funktionen. Sie können verwenden%02x
, um die Hex-Darstellung eines Zeichens zu erhalten, aber Sie müssen sicherstellen, dass Sie eine Zeichenfolge übergeben, die das Zeichen in einfache Anführungszeichen enthält ( Bearbeiten : Es stellt sich heraus, dass nur ein einfaches Anführungszeichen am Anfang ausreicht):Sie können der Einfachheit halber eine Shell-Funktion erstellen:
quelle
hex 'ץ'
geben%5e5
statt%05e5
. Sie sollten den Hauptteil der Funktion ins=
printf "%%% 04x" "'$ 1"; echo "%${s%00}"
Versuchen Sie od :
-A n
bedeutet, dass keine Offsets gedruckt werden und-t x1
dass der Typ der Eingabe hexadezimale Ganzzahlen von 1 Byte sind.quelle
echo -n
, um die Newline am Ende wegzulassen, damit Sieod
sie nicht aufheben und in0a
xxd
ist ein Hex-Dump-Dienstprogramm, das als Teil desvim-common
Pakets geliefert wird.Es verfügt über eine praktische
-p
Option, die einen fortlaufenden Hexdump-Stil "Plain / Postscript" ausgibt. Dies kann problemlos rückgängig gemacht werden, indem-r
...-u
Hex-Ziffern in Großbuchstaben ausgegeben werden.quelle
xxd -r -p
. Hatxxd -r
im obigen Beispiel einfach nicht funktioniert.