AWK, спецификатор формата printf% x имеет проблемы с отрицательными значениями - PullRequest
1 голос
/ 19 января 2011

Кажется, что у AWK есть проблемы со спецификатором формата без знака в шестнадцатеричном формате:

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

возвращает: 0x7fffffff

Это известная проблема с awk?

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 января 2011

Проблема в том, что awk преобразует входные параметры в числа автоматически, только если они десятичные.Но это должно работать:

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

Все это объяснено здесь, в разделе strtonum: http://www.gnu.org/manual/gawk/html_node/String-Functions.html#String-Functions

0 голосов
/ 19 января 2011

Я не вижу его здесь, хотя я не смог использовать шестнадцатеричный ввод, как вы, но преобразовать в десятичный не было проблемой.

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

Если вы хотите рассказать нам, на какой платформе вы находитесь '(это был GNU awk 3.1.5), мы могли бы помочь вам больше.

...