Linux 将十进制值作为两个小的endian十六进制字节输出到文件
我需要执行以下操作的bash命令: 编写一个新文件,其中前两个字节包含值(本例中为起始地址)的原始十六进制字节(非ASCII)。也就是说,49152应该作为Linux 将十进制值作为两个小的endian十六进制字节输出到文件,linux,bash,data-conversion,Linux,Bash,Data Conversion,我需要执行以下操作的bash命令: 编写一个新文件,其中前两个字节包含值(本例中为起始地址)的原始十六进制字节(非ASCII)。也就是说,49152应该作为00c0写入文件 我尝试了几种组合,包括printf、xxd、fold、tac/cat等 printf "%X\\n" 49152 | fold -w2|tac|tr -d "\n" 这为我提供了所需内容的ASCII表示,而不是原始十六进制字节 value=49152 printf "\x$(printf %x $(($value-$va
00c0
写入文件
我尝试了几种组合,包括
printf
、xxd
、fold
、tac/cat
等
printf "%X\\n" 49152 | fold -w2|tac|tr -d "\n"
这为我提供了所需内容的ASCII表示,而不是原始十六进制字节
value=49152
printf "\x$(printf %x $(($value-$value/256*256)))\x$(printf %x $(($value/256)))" > file.txt
hexdump -C file.txt
输出:
00000000 00 c0 |..|
00000002
00000000 c0||
00000002
这是关于创建一个二进制文件,该文件以下面代码的起始地址开始。所以$C000将是程序的起始地址,位于前两个字节之后。hextump只对文件有效,这应该在命令行中使用。您是否尝试过:
{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
也应该是更好(不那么笨拙)的选择。