说我有8b1f 0008 0231 49f6 0300 f1f3 75f4 0c72 f775 0850 7676 720c 560d 75f0 02e5 ce00 0861 1302 0000 0000,我怎样才能轻松地得到一个二进制文件,而不复制+粘贴到十六进制编辑器?od(1)的反义词是什么?
6
A
回答
12
用途:
% xxd -r -p in.txt out.bin
5
参见xxd。
0
这里是扭转 “OD” 的方式输出:
echo "test" | od -A x -t x1 | sed -e 's|^[0-f]* ?||g' | xxd -r
test
0
这个版本将与二进制格式工作过:
cat /bin/sh \
| od -A n -v -t x1 \
| tr -d '\r' \
| xxd -r -g 1 -p1 \
| md5sum && md5sum /bin/sh
额外“ \ r'就是如果你正在处理w/dos文本文件... 并逐字节处理以防止endians差异如果在不同的系统上运行部分管道。
1
所有本答案指的是方便xxd -r
的方法,但是对于有些情况下xxd
不可用或方便这里是一个更便携(更灵活,更详细和低效率)的解决方案,只使用POSIX shell语法(这也弥补了输入的数字奇数):
un_od() {
printf -- "$(
tr -d '\t\r\n ' | sed -e 's/^(.(.{2})*)$/0\1/' -e 's/\(.\{2\}\)/\\x\1/g'
)"
}
顺便说一句:你没有指定你的输入是否是大端或小端,或者您是否要大/小端输出。通常在你的问题中的输入将是big-endian /网络顺序(例如,由od -t x1 -An -v
创建),并且将被期望转换为大端输出。我假设xxd
只是假设,如果没有告诉其他的,这个解决方案也是这样做。如果需要进行字节交换,则字节交换的方式还取决于系统的字长(例如32位,64位)和极少的字节大小(几乎总是假设8位字节 - 八位字节 - 虽然)。
下面的函数使用更复杂版本的binary -> od -> binary
技巧来移植字节码转换二进制数据,以系统字节序为条件,并考虑系统字大小。该算法适用于任何高达72bit字的大小(因为seq -s '' 10
- >12345678910
不工作):
if { sed --version 2>/dev/null || :; } | head -n 1 | grep -q 'GNU sed'; then
_sed() { sed -r "${@}"; }
else
_sed() { sed -E "${@}"; }
fi
sys_bigendian() {
return $(
printf 'I' | od -t o2 | head -n 1 | \
_sed -e 's/^[^ \t]+[ \t]+([^ \t]+)[ \t]*$/\1/' | cut -c 6
)
}
sys_word_size() { expr $(getconf LONG_BIT)/8; }
byte_swap() {
_wordsize=$1
od -An -v -t o1 | _sed -e 's/^[ \t]+//' | tr -s ' ' '\n' | \
paste -d '\\' $(for _cnt in $(seq $_wordsize); do printf -- '- '; done) | \
_sed -e 's/^/\\/' -e '$ s/\\+$//' | \
while read -r _word; do
_thissize=$(expr $(printf '%s' "$_word" | wc -c)/4)
printf '%s' "$(seq -s '' $_thissize)" | tr -d '\n' | \
tr "$(seq -s '' $_thissize -1 1)" "$_word"
done
unset _wordsize _prefix _word _thissize
}
可以在尾端格式使用上面的输出文件的内容,无论系统字节序:
if sys_bigendian; then
cat /bin/sh
else
cat /bin/sh | byte_swap $(sys_word_size)
fi
相关问题
- 1. bash中&&的反义词是什么?
- 2. “git fetch”的反义词是什么?
- 3. Ruby中chr()的反义词是什么?
- 4. R中dput()的反义词是什么?
- 5. 'unpack(“m”)`的反义词是什么?
- 6. iphone中pushviewcontroller的反义词是什么?
- 7. `git diff HEAD ^`的反义词是什么?
- 8. substr的反义词是什么?
- 9. stringByAddingPercentEscapesUsingEncoding的反义词是什么?什么函数取出%转义?
- 10. !== -1的意义是什么?
- 11. python的ord()函数的反义词是什么?
- 12. 这个逻辑语句的反义词是什么
- 13. 大纲的反义词是什么:在CSS中没有?
- 14. MEF:懒惰<T>类型的反义词是什么?
- 15. mysql中in函数的反义词是什么?
- 16. 在解析理论中,“派生”的反义词是什么?
- 17. 延迟加载的反义词是什么?
- 18. 在PHP中var-export函数的反义词是什么?
- 19. Protobuf“field 1”的意义是什么?
- 20. {$ unset:{field:1}}中的含义是什么
- 21. @_ -1在Perl中的含义是什么?
- 22. Type.MakeByRefType的反义词
- 23. 用于Django视图的@login_required装饰器的反义词是什么?
- 24. 什么是动词=“*”?
- 25. 蟒蛇:是什么+ = 1 = + 1
- 26. “$ 1/*”在“$ 1/*”文件中的含义是什么
- 27. Prolog中的谓词“simple/1”是什么意思(SWI-Prolog)
- 28. 什么是stringWithFormat:@“%@ - 1”是什么意思?
- 29. “封闭”这个词的相反之处是什么?
- 30. 到底是什么在[expr.ref]/1中提到的脚注的含义是什么?
编写一个简单的脚本或程序并执行它。 5-10行C或任何其他语言。木已成舟。 – 2009-04-27 19:29:17