【发布时间】:2019-09-19 16:59:49
【问题描述】:
我需要一个执行以下操作的 bash 命令:
编写一个新文件,其中前两个字节包含一个值(在本例中为起始地址)的原始十六进制字节(不是 ASCII)。即,49152 应作为
00 c0写入文件。
我尝试了printf、xxd、fold、tac/cat 等的几种组合。
printf "%X\\n" 49152 | fold -w2|tac|tr -d "\n"
这为我提供了我需要的 ASCII 表示,而不是原始 HEX 字节。
【问题讨论】:
-
这是关于创建一个以后面代码的起始地址开头的二进制文件。所以 $C000 将是前 2 个字节之后的程序的起始地址。
-
hexdump 只对文件有效,应该在命令行中使用
-
你试过这个吗:
{ dd if=/dev/zero bs=1 count=1 2>/dev/null; printf $'\xc0'; } >yourfile.bin? -
问题是,$c000 (49152) 是一个变量,而不是一个固定值。
-
printf,xxd,tac,fold和tr不是bash,所以如果它们没问题,大概Perl和Python也是这样恕我直言,会是更好(不那么笨拙)的选择。
标签: linux bash data-conversion