Command-Line-Interface
通過命令行將十六進制值寫入文件(不是 ascii 值)
我想知道是否有人知道允許我直接將十六進制值寫入文件的命令行實用程序。這樣當文件的十六進制轉儲完成時,我輸入的值就會被吐出。我直接寫入十六進制是至關重要的,因為我需要寫入的許多值沒有任何與它們關聯的 unicode 或 ascii 等效字元。尋找類似的東西:
writehex f6050000 ac7e0500 02000800 01000000 newfile hexdump newfile hexdump 1.02 ts.event.1 00000000: f6050000 ac7e0500 02000800 01000000 .....~.......... 16 bytes read
這個 Bash 函式應該適合你:
writehex () { local i while [ "$1" ]; do for ((i=0; i<${#1}; i+=2)) do printf "\x${1:i:2}"; done; shift; done }
替代實現:
writehex () { local arg, i for arg; do for ((i=0; i<${#arg}; i+=2)) do printf "\x${arg:i:2}" done done }
要測試它:
$ writehex abc00001ff | hexdump -C 00000000 ab c0 00 01 ff |.....| 00000005 $ writehex f6050000 ac7e0500 02000800 01000000 | hexdump -C 00000000 f6 05 00 00 ac 7e 05 00 02 00 08 00 01 00 00 00 |.....~..........| 00000010
另一種選擇是使用
xxd
.$ echo hello | xxd 0000000: 6865 6c6c 6f0a $ echo hello | xxd | xxd -r hello
編輯:
此外,您可以使用該
-p
選項來接受一些自由格式的輸入數據:$ echo 'f6050000 ac7e0500 02000800 01000000' | xxd -r -p | hexdump -C 00000000 f6 05 00 00 ac 7e 05 00 02 00 08 00 01 00 00 00 |.....~..........| 00000010
編輯2:
修改了上面的函式以處理多個輸入參數(由空格分隔的十六進制數字字元串)。