Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将十进制值作为两个小的endian十六进制字节输出到文件_Linux_Bash_Data Conversion - Fatal编程技术网

Linux 将十进制值作为两个小的endian十六进制字节输出到文件

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

我需要执行以下操作的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-$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
也应该是更好(不那么笨拙)的选择。