【Java】八进制那些事
生活随笔
收集整理的這篇文章主要介紹了
【Java】八进制那些事
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
直接數值賦值
眾所周知,數值前不加0,所以八進制數的表示要求開頭加0,注意不是o或者O。
比如0123,直接賦值,對應的其實是十進制數83。
來自字符串的轉型
但字符串的強制轉型則截然不同。
我們的數值串可能以0開頭,比如下面的串"0123":
直接轉型,發現只是把0消去了而已,還是妥妥的十進制。
理由是:Integer.parseInt()默認十進制。
那怎么轉八進制呢?顯然是加上radix參數的啦,參數值就是8。
jshell> int d = Integer.parseInt(b, 8); d ==> 83你以為決定能轉成八進制是因為b是"0123"?其實不是,任意數就可以,沒必要有先導0的:
jshell> b = "123"; b ==> "123"jshell> int d = Integer.parseInt(b, 8); d ==> 83printf()輸出八進制
這個部分該使用%0還是%o呢?
先看看%0吧!
jshell> System.out.printf("%0", a); | 異常錯誤 java.util.UnknownFormatConversionException:Conversion = '0' | at Formatter.checkText (Formatter.java:2732) | at Formatter.parse (Formatter.java:2718) | at Formatter.format (Formatter.java:2655) | at PrintStream.format (PrintStream.java:1053) | at PrintStream.printf (PrintStream.java:949) | at (#4:1)明顯在扯皮……%0什么鬼啊。。。
所以要用%o,打印出的結果就是八進制的啦!(%d是十進制整數)
jshell> System.out.printf("%o", a); 123$5 ==> java.io.PrintStream@65e2dbf3jshell> System.out.printf("%o", c); 173$6 ==> java.io.PrintStream@65e2dbf3jshell> System.out.printf("%d", a); 83$7 ==> java.io.PrintStream@65e2dbf3大O行嗎?
jshell> System.out.printf("%O", c); | 異常錯誤 java.util.UnknownFormatConversionException:Conversion = 'O' | at Formatter$FormatSpecifier.conversion (Formatter.java:2839) | at Formatter$FormatSpecifier.<init> (Formatter.java:2865) | at Formatter.parse (Formatter.java:2713) | at Formatter.format (Formatter.java:2655) | at PrintStream.format (PrintStream.java:1053) | at PrintStream.printf (PrintStream.java:949) | at (#7:1)顯然不行啊!
八進制回轉String
注意前面已經定義了a的值是0123,即83。
那么同樣可以使用 Integer.toString() 中的radix來破解,radix置為8即可。
結果不帶先導0。
總結
有關八進制的使用,大概可以這么做一下歸納:
- 八進制用的不多,不如二進制、十進制、十六進制廣泛。
- 八進制直接賦值要加先導0,但顯示出來的還是十進制的值,底層還是二進制在運算,八進制沒實際意義。注意這里不是o或者O,是0。
- 八進制使用printf()打印的時候用的是"%o",不是O或者0。
- 將String轉換成八進制數的時候,使用Integer.parseInt(),指明radix即可,結果還是十進制(顯示)/二進制(底層)表示的。注意String不必加先導0。
- 八進制數轉成String的時候,使用逆向的Integer.toString(),指明radix即可,結果就是不帶先導0的八進制字符串表示。
總結
以上是生活随笔為你收集整理的【Java】八进制那些事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【VBS】网页脚本的放置位置与载入时机
- 下一篇: 【操作系统】中断和异常的比较