十六进制变量

十六进制变量

好的,我尝试制作一个循环,将变量从 0 增加到 FF(0x00 到 0xFF 也可以):

...
declare -i register=0

while [ 255 -ge $register ]
do
  sudo mono ec-probe.exe read 0x+$register
  register=$register+1
done
...

这可行,但我怎样才能使循环从 0 运行到 FF?是否有可能使用十六进制变量?

诚挚的 Stefan

答案1

bash 会将变量存储为十进制整数,但您可以将其与十六进制常量进行比较。如果要将数字格式化为十六进制,则必须明确转换:

for ((register = 0; register <= 0xff; register++)); do
    printf -v hex %x $register
    echo "$register   $hex"
done

输出

0   0
1   1
2   2
...
253   fd
254   fe
255   ff

答案2

您已成功创建一个显示从 0 到 255 的值的循环……现在您需要将十进制值格式化为十六进制。

printf这样做没有问题:

$ printf '0x%02X\n' 128
0x80

将其与您现有的命令配对,如下所示:

mono ec-probe.exe read $(printf '0x%02X' ${register})

相关内容