十六进制转储到二进制 - xxd -r 等效
hexadecimal dump to binary - xxd -r equivalent
在 Linux bash shell 中,我使用以下代码将普通的十六进制转储转换为二进制
$ echo "8cd59ef53c9aaa68311b73767e0975e7" | xxd -r -p > xxd_out.bin
当我在文本查看器中打开文件时,它看起来像 ŒÕžõ<šªh1sv~ uç
或在 xxd
$ xxd -b xxd_out.bin
00000000: 10001100 11010101 10011110 11110101 00111100 10011010 ....<.
00000006: 10101010 01101000 00110001 00011011 01110011 01110110 .h1.sv
0000000c: 01111110 00001001 01110101 11100111 ~.u.
或在 Notepad++ Hex-Editor(插件)视图中
如何在 Ruby 中获得相同的二进制输出?有没有可用的图书馆可以做 xxd -r -p
会做的事情?
.scan(/../)
会将 "8cd59e"
拆分为 ["8c","d5","9e"]
.map(&:hex)
将其转换为 [0x8c, 0xd5, 0x9e]
.pack("c*")
会打包到 "\x8c\xd5\x9e"
echo "8cd59ef53c9aaa68311b73767e0975e7" | \
ruby -ne 'print $_.scan(/../).map(&:hex).pack("c*")' | \
xxd -b
输出:
00000000: 10001100 11010101 10011110 11110101 00111100 10011010 ....<.
00000006: 10101010 01101000 00110001 00011011 01110011 01110110 .h1.sv
0000000c: 01111110 00001001 01110101 11100111 ~.u.
在 Linux bash shell 中,我使用以下代码将普通的十六进制转储转换为二进制
$ echo "8cd59ef53c9aaa68311b73767e0975e7" | xxd -r -p > xxd_out.bin
当我在文本查看器中打开文件时,它看起来像 ŒÕžõ<šªh1sv~ uç
或在 xxd
$ xxd -b xxd_out.bin
00000000: 10001100 11010101 10011110 11110101 00111100 10011010 ....<.
00000006: 10101010 01101000 00110001 00011011 01110011 01110110 .h1.sv
0000000c: 01111110 00001001 01110101 11100111 ~.u.
或在 Notepad++ Hex-Editor(插件)视图中
如何在 Ruby 中获得相同的二进制输出?有没有可用的图书馆可以做 xxd -r -p
会做的事情?
.scan(/../)
会将 "8cd59e"
拆分为 ["8c","d5","9e"]
.map(&:hex)
将其转换为 [0x8c, 0xd5, 0x9e]
.pack("c*")
会打包到 "\x8c\xd5\x9e"
echo "8cd59ef53c9aaa68311b73767e0975e7" | \
ruby -ne 'print $_.scan(/../).map(&:hex).pack("c*")' | \
xxd -b
输出:
00000000: 10001100 11010101 10011110 11110101 00111100 10011010 ....<.
00000006: 10101010 01101000 00110001 00011011 01110011 01110110 .h1.sv
0000000c: 01111110 00001001 01110101 11100111 ~.u.