сценарий оболочки для преобразования даты в шестнадцатеричный формат - PullRequest
1 голос
/ 15 декабря 2011

У меня есть инструмент, который требует времени в шестнадцатеричном формате.

Предположим, что если date -d "Thu Sep 15 09:13:05 UTC 2011" +%s -u дает время в секундах как 1316077985, шестнадцатеричное значение 1316077985, равное 4E71C1A1, должно быть найдено, и оно должно быть задано в качестве ввода для инструмента как

/usr/bin/mytool 0xA1 0xC1 0x71 0x4E.

Как это сделать в сценарии оболочки, если время в секундах доступно в качестве ввода?

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

Что-то вроде этого должно работать для вас:

hex=$(printf '%X' 1316077985)
/usr/bin/mytool  0x${hex:6:2} 0x${hex:4:2} 0x${hex:2:2} 0x${hex:0:2}
0 голосов
/ 15 декабря 2011

У меня есть решение, но это perl, а не shell:

fg@erwin ~/src/json-schema-validator $ date +%s | perl -e 'my $num = <STDIN>; my @hex; while ($num) { push @hex, sprintf("0x%02x", $num & 0xff); $num >>= 8; } print join(", ", reverse @hex) . "\n"'
0x4e, 0xe9, 0xec, 0x88
...