簡體   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