我知道 Unix 时间应该是 32 位(4 字节)值。为了计算当前的 UNIX 时间,我使用以下命令:
long time = (System.currentTimeMillis())/1000;
这工作正常 - 我得到的值与在 Unix 命令 shell 上执行此操作时的值相同: “日期+%s”。
不过,我想用二进制表示它。所以我尝试了这个:
System.out.println(Long.toBinaryString(time));
但是,我只得到 31 位,而不是我预期的 32 位。我错过了什么?
谢谢!
蒂姆
请您参考如下方法:
不显示前导零。试试这个:
long l = -1;
System.out.println(Long.toBinaryString(l));
或者:
long l = Long.MIN_VALUE;
System.out.println(Long.toBinaryString(l));
或者:
long l = -2112;
System.out.println(Long.toBinaryString(l));
您应该看到所有 64 位。 (Java中的long是64位,而不是32位)
希望对您有所帮助。
编辑:
如果您只想要一个 32 位且所有前导零的字符串表示形式,您可以执行多种操作。一是:
int i = 42;
String result = String.format("%32s", Integer.toBinaryString(i)).replace(' ', '0');
System.out.println(result);
另一个是:
int i = 42;
String result = String.format("%032d", Integer.parseInt(Integer.toBinaryString(i)));
System.out.println(result);