十六进制变量

分享于 

2分钟阅读

电脑

 

问题:

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


...


declare -i register=0



while [ 255 -ge $register ]


do


 sudo mono ec-probe.exe read 0x+$register


 register=$register+1


done


...



这里操作有效,但如何使循环从 0运行到 FF? 十六进制变量有possibilty?

Sincerly 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%02Xn' 128


0x80



你现有的命令配对,如下所示:


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





VAR  variable  HEX  hexadecimal  
相关文章