文本转换,二进制数字 -> 十六进制(或十进制)

nos*_*nos 3 text command-line conversion

我有一个巨大的文本文件,其中的数字代表二进制的 8 位值。我想将这些转换为十六进制(或十进制,并不重要)。也就是说,我有一个包含例如的文本文件

0 0 0 0  1 1 0 1
0 0 1 1  1 0 0 1
0 1 0 0  0 1 0 1
1 0 0 0  1 1 0 1
Run Code Online (Sandbox Code Playgroud)

(只有 8 位),我想将其转换为,比如说,

0x0d
0x39
0x45
0x1d
Run Code Online (Sandbox Code Playgroud)

听起来这可以通过 awk 脚本/vim 宏或任何其他工具的组合来完成。

enz*_*tib 5

这里有一个 bash 脚本片段来做到这一点

while read line; do
    n=$((2#${line// /}))
    printf '0x%02X\n' "$n"
done <input-file
Run Code Online (Sandbox Code Playgroud)

其中2#表示以 2 为底,${var// /}表示“删除所有空格”