【问题标题】:How to print the UNIX time in a binary representation in Bash [duplicate]如何在 Bash 中以二进制表示形式打印 UNIX 时间 [重复]
【发布时间】:2021-05-12 20:01:06
【问题描述】:

我最近发现 5 月 15 日 02:09:25 Unix 时间将等于 1010101010101010101010101010101 二进制表示。

我想知道它是否是假的,所以我试图以二进制形式获取当前的 Unix 时间。我想出了一个这样的简单提示:

$ date +%s | xxd -b

我得到了这样的结果:

0000000: 00110001 00110100 00110011 00110001 00110100 00110110  143146
0000006: 00110010 00110100 00110100 00110010 00001010           2442.

总而言之,我得到了:

0011000100110100001100110011000100110100001101100011001000110100001101000011001000001010

但它显示的数字比我预期的要多。所有其他变体也不令人满意,例如$ date "+%v %H:%M:%S" | xxd -b$ date | xxd -b

我猜,这对datexxd 命令不会给我预期的结果。

您能否告诉我如何以二进制表示形式获得当前时间,以便在 5 月 15 日 02:09:25 获得 1010101010101010101010101010101


更新:

好的,所以使用这个在线转换器 (http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html) 我能够得到合理的位数。 如何使用 bash 达到同样的效果?

【问题讨论】:

  • 请注意,date '+%s' 生成一串以 ASCII 编码的十进制数字,xxd -b 将每个数字的 ASCII 字符转换为二进制(0011 后跟 4 位是 48 + digit )。
  • 十六进制的 0x55555555。这意味着,截至 UTC 时间 2015 年 5 月 15 日星期五 02:09:25,当 32 位签名 @ 987654334@ 溢出。

标签: bash unix time


【解决方案1】:

试试这个:

echo "obase=2;$(date +%s)" |bc

【讨论】:

    猜你喜欢
    • 2010-11-04
    • 2014-06-01
    • 2016-04-17
    • 2018-06-15
    • 2011-06-14
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多