我需要左移9位十进制数并以十六进制打印结果。
这是一个例子:
# Desired result:
perl -e "printf('%x', (99 << 9))"; echo;
c600
# Use case:
awk 'BEGIN{ d=99; printf("Decimal: %d, Hexadecimal: %x\n", d, d }'
Decimal: 99, Hexadecimal: 63 # Must be left shift by 9 (c600)
你能给我一个重现这个的方法吗?
答案 0 :(得分:2)
除非我们的精度有限,否则左移9乘以乘以2 ^ 9 = 512:
$ awk 'BEGIN{ d=99; printf("Decimal: %d, Hexadecimal: %x\n", 512*d, 512*d) }'
Decimal: 50688, Hexadecimal: c600
答案 1 :(得分:2)
$ awk 'BEGIN{ d=99; x=d*2^9; printf("Decimal: %d, Hexadecimal: %x\n", d, x )}'
Decimal: 99, Hexadecimal: c600
答案 2 :(得分:1)
不需要awk,你可以使用printf
在bash中执行此操作:
printf "%x\n" $((99 << 9))
c600
如果必须使用awk(gnu),请使用lshift
函数:
awk 'BEGIN{printf "%x\n", lshift(99, 9)}'
c600