我知道Unix时间应该是32位(4字节)值。要计算当前的UNIX时间,请使用以下命令:
long time = (System.currentTimeMillis())/1000;
这很好用 - 我得到的值与在Unix命令shell上执行时相同: "日期+%s"。
我想用二进制表示这个。所以我尝试了这个:
System.out.println(Long.toBinaryString(time));
然而,我只得到了31位,而不是我预期的32位。我错过了什么?
谢谢!
添
答案 0 :(得分:0)
未显示前导零。试试这个:
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中的长度是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);