1
for num in {3758145536..3758149632..4}
do
    echo "obase=16; $num" | hexnum
    peek -lt $hexnum > "/luascript/dumpfileA"
done

我想要做的是,从地址 0xe000000 迭代到 0xe0001000 使用 peek 偷看这些部分内存并将结果写入文件。

所以我使用 Deceimal 来做增量工作。然后转换为十六进制。

也许,我可以直接增加十六进制吗?

但这不起作用。需要帮助 谢谢!

4

3 回答 3

4

(我假设您使用的是 bash)。

一般来说,bash 只允许您输入以 10 为底的数字文字。您可以在算术上下文中使用其他底(((...))例如,在 内部),但它将以其以 10 为底的表示形式显示。但是,您可以使用printf内置快速转换为十六进制表示。

for (( num=0xe0000000; num <= 0xe0001000; num+=4 )); do
    peek -lt $( printf "%x" $num ) >> /luascript/dumpfileA
done
于 2012-08-23T22:34:00.190 回答
0

如果你正在使用zsh你可以做这样的事情(注意c_bases需要设置0x在前面$num):

setopt c_bases
typeset -i 16 num
for num in $( seq $((0xe000c000)) 4 $((0xe000d000)) ); do 
  echo "peek -lt $num > /luascript/dumpfileA"
done | head

输出:

peek -lt 0xE000C000 > /luascript/dumpfileA
peek -lt 0xE000C004 > /luascript/dumpfileA
peek -lt 0xE000C008 > /luascript/dumpfileA
peek -lt 0xE000C00C > /luascript/dumpfileA
peek -lt 0xE000C010 > /luascript/dumpfileA
peek -lt 0xE000C014 > /luascript/dumpfileA
peek -lt 0xE000C018 > /luascript/dumpfileA
peek -lt 0xE000C01C > /luascript/dumpfileA
peek -lt 0xE000C020 > /luascript/dumpfileA
peek -lt 0xE000C024 > /luascript/dumpfileA

删除headecho并在您对输出感到满意时引用。

于 2012-08-23T22:46:41.647 回答
0

很简单!用这个:

bc <<< "obase = 16 ; $(seq 0 65536)"
于 2014-10-30T12:04:27.853 回答