繁体   English   中英

在Java中将long转换为二进制可以得到31位?

[英]Converting long to binary in Java gives 31 bits?

我知道Unix时间应该是32位(4字节)值。 为了计算当前的UNIX时间,我使用以下方法:

long time = (System.currentTimeMillis())/1000;

这可以正常工作-我得到与在Unix命令shell上执行此操作时相同的值:“ date +%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位的String表示形式并带有所有的前导零,则可以执行许多操作。 一种是:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM