java - 左边为 0 的 long 值

标签 java long-integer octal

为什么会发生这种行为?

long value = 123450;
System.out.println("value: " + value); 

值:123450

long value = 0123450;
//           ^
System.out.println("value: " + value); 

值:42792

这个 42792 是什么?

最佳答案

Why this behavior happens?

正如以 0x 开头的文字被视为十六进制数(以 16 为底)一样,以 0 开头的文字被视为 octal numbers ,即以 8 为基数的数字。

(尝试写 0789,你会发现编译器会报错。)

What is this 42792?

123450以8为基数表示数

1×85 + 2×84 + 3× 83 + 4×82 + 5×81 + 0×80 = 42792

关于java - 左边为 0 的 long 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540179/

相关文章:

swift - 如何在 Swift 3 中将小数八进制转换为十六进制小数,反之亦然?

java - 使用 JVM 属性禁用特定的弱密码并强制执行完美前向保密

java - Apache Spark 上的 CoreNLP

java - 为什么转换为 int 给我 8 而不是 0?

java - Java 中的 Convert.ToInt64 等价物

scala - Scala 中的 Long/Int 到十六进制字符串

java - Java 中的八进制到文本

java - 如何解析带有引号中的某些项目的逗号分隔行(CSV)?

java - 我们可以序列化一个没有任何成员的类吗

javascript - babel 中的八进制数