shell脚本将日期转换为十六进制格式

时间:2011-12-15 12:38:58

标签: shell date formatting hex

我有一个工具需要十六进制格式的时间。

假设date -d "Thu Sep 15 09:13:05 UTC 2011" +%s -u1316077985为单位给出时间(以秒为单位),应找到1316077985的十六进制值4E71C1A1,并将其作为输入提供给工具

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

如果以秒为单位的时间可用作输入,如何在shell脚本中执行此操作?

2 个答案:

答案 0 :(得分:2)

这样的事情对你有用:

hex=$(printf '%X' 1316077985)
/usr/bin/mytool  0x${hex:6:2} 0x${hex:4:2} 0x${hex:2:2} 0x${hex:0:2}

答案 1 :(得分:0)

我有一个解决方案,但它是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