我想将十六进制值转换为十进制值,执行一些算术运算并将其转换回十六进制。 为了尝试这样做,我面临以下错误,
“myshell.sh:line 77:16 ## 0x00a002:无效的数字(错误令牌是 “16 ## 0x00a002”)
相关的代码行是:
SUBVER3_1=$((16##$SUBVER3_1))
有人可以告诉我:
答案 0 :(得分:4)
0x
前缀对base 16表示法无效。在转换之前剥去它。此外,如果您使用的是Bash,则基本转换的语法在基数之后使用单个#
。
SUBVER3_1=$((16#${SUBVER3_1#0x}))
这使用传统的POSIX ${variable#prefix}
表示法来去除前缀。 #
中的base#string
与$((255+255))
表示法无关。
shell支持基本整数运算。算术运算独立于您使用的基数;像$((16#FF+16#FF))
那样的简单加法等也可以使用base-16表示法printf
,但请记住,只有整数的除法的用处相当有限。如果您想要十六进制的结果,printf "%04x\n" $((16#ff + 16#ff))
可以做到这一点:
defaultLNNumberpad.backgroundColor = [UIColor whiteColor];
答案 1 :(得分:0)
问题现已解决, 我使用print语句来解决这个问题,而不是上面的语句
SUBVER3_1 = $(printf“%x”$ SUBVER3_1)#从十进制转换为十六进制
这符合目的