AWK,printf格式说明符%x存在负值问题

时间:2011-01-19 12:33:44

标签: awk printf

似乎AWK在无符号十六进制格式说明符方面存在问题:

echo 0x80000000 | awk '{printf("0x%08x\n", $1)}'

回复:0x7fffffff

这是awk的已知问题吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

问题是awk只在十进制时自动将输入参数转换为数字。但这应该有效:

echo 0x80000000 | awk'{printf(“0x%08x \ n”,strtonum($ 1))}'

这里有所有解释,在strtonum部分: http://www.gnu.org/manual/gawk/html_node/String-Functions.html#String-Functions

答案 1 :(得分:0)

这里没有看到它,虽然我不能像你一样使用十六进制输入,但转换为十进制没问题。

$ echo 2147483648 | awk '{printf("0x%08x\n", $1)}'
0x80000000

如果您想了解我们所使用的平台(这是GNU awk 3.1.5),我们可以为您提供更多帮助。