Skip to main content
 首页 » 编程设计

java中在Java中将long转换为二进制给出31位

2025年01月19日7lori

我知道 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);