Bash 使用awk将十进制数移位9位(不能使用gawk lshift)

Bash 使用awk将十进制数移位9位(不能使用gawk lshift),bash,awk,hex,printf,shift,Bash,Awk,Hex,Printf,Shift,我需要将十进制数左移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) #期望的

我需要将十进制数左移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)
#期望的结果:

perl-e“printf('%x',(99不需要awk,您可以在bash中使用
printf
来实现这一点:

printf "%x\n" $((99 << 9))
c600

不需要awk,您可以在bash中使用
printf

printf "%x\n" $((99 << 9))
c600

除非精度有限,否则左移9等于乘以2^9=512:

$ awk 'BEGIN{ d=99; printf("Decimal: %d, Hexadecimal: %x\n", 512*d, 512*d) }'
Decimal: 50688, Hexadecimal: c600

除非精度有限,否则左移9等于乘以2^9=512:

$ awk 'BEGIN{ d=99; printf("Decimal: %d, Hexadecimal: %x\n", 512*d, 512*d) }'
Decimal: 50688, Hexadecimal: c600

使用awk对我来说是强制性的,对于lshift:awk:line 2:函数lshift从未定义,但感谢您的帮助
lshift
可用于gnu awk,而不是旧的awky。您肯定有一个从awk到gawk的/etc/default/symbolic链接。^@anubhavaNo我没有。我使用OSX并将BSD awk与
gawk分开保存(通过
自制
安装)使用awk对我来说是强制性的,对于lshift:awk:line 2:函数lshift从未定义,但感谢您的帮助
lshift
可用于gnu awk,而不是旧的awky。您肯定有一个从awk到gawk的/etc/default/symbolic链接。^@anubhavaNo我没有。我使用OSX并将BSD awk与
gawk分开保存(通过
自制
安装)