java - 如何在二进制中打印 Long?

标签 java

我正在尝试以二进制形式打印一个 Long,但它一直切断 0。有没有办法强制它显示所有位?

这是我的代码:

long l = 1;
System.out.println(Long.toBinaryString((long)l));

由于我希望保留的 0 已删除,因此仅返回 1:

0000 0000 0000 0000 0000 0000 0000 0001

提前致谢。

我的临时解决方案:

public String fillZeros(Long value) 
{
    String str = Long.toBinaryString((long) value);
    String temp;
    temp = str;
    while(temp.length() < 32) {
        temp = "0" + temp;
    }
    return temp;
}

最佳答案

你可以这样做

for(int i = 0; i < Long.numberOfLeadingZeros((long)l); i++) {
      System.out.print('0');
}
System.out.println(Long.toBinaryString((long)l));

这将得到你想要的,除了每 4 个数字之间没有空格(尽管你应该能够编码)。可能有一种方法可以使用 Formatter 自动执行此操作 但我找不到它。

编辑:

如果您知道所需的 0 的数量,您可以使用 String 的 格式方法(我忘记将其改回数字,这将修复异常)。

String.format("%032d", new BigInteger(Long.toBinaryString((long)l)));

关于java - 如何在二进制中打印 Long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10401263/

相关文章:

java - JFreechart 将字符串值和/或符号设置为 Xaxis

java - 如何从 .conf 运行 jar?

java - 基于组件的 MVC 框架中的控制较少意味着什么

java - JAVA中动态加载一个类-Anomaly

java - 使用 Gson 反序列化对象时字段异常的无效值

java - 为什么我的 springboot 应用看不到 @Service 注解?

java - 测试在 Eclipse 中运行良好,但在 mvn 命令中失败

java - 从 ArrayList 获取随机值

java - Spring 批处理 : Multithreaded step with AsyncItemProcessor doesn't run in parallel

java - JOptionPane 返回字符串