linux下如何進制的相互轉(zhuǎn)換
linux下進制的相互轉(zhuǎn)換
linux下十六進制,十進制,八進制,二進制的相互轉(zhuǎn)換
不同進制的特殊符號
如下:
- 二進制:數(shù)字前綴為
0b或0B,字符集為0和1。 - 八進制:數(shù)字前綴為
0o(零),字符集為0到7。 - 十進制:沒有數(shù)字前綴,字符集為
0到9。 - 十六進制:數(shù)字前綴為
0x或0X,字符集為0到9和A到F(大小寫都可以)。
下面是一些示例:
- 二進制數(shù)字
1101可以表示為0b1101或0B1101。 - 八進制數(shù)字
16可以表示為020或0o20,其中前綴0表示它是一個八進制數(shù)字。 - 十進制數(shù)字
42不需要前綴。 - 十六進制數(shù)字
1A可以表示為0x1A或0X1a。
需要注意的是:
- 在編寫程序時,應(yīng)在數(shù)字前加上正確的前綴,以明確數(shù)字的進制。
- 否則,計算機可能會將它們解釋為不同進制的數(shù)字。
在linux shell上進行進制轉(zhuǎn)換
各進制轉(zhuǎn)10進制:
方法一:echo $((現(xiàn)在的進制#原始值))
#2進制數(shù)轉(zhuǎn)10進制數(shù) root@unassigned:/# echo $((2#1011)) 11 #8進制數(shù)轉(zhuǎn)10進制數(shù) root@unassigned:/# echo $((8#13)) 11 #16進制數(shù)轉(zhuǎn)10進制數(shù) root@unassigned:/# echo $((16#B)) 11
方法二:echo ‘ibase=現(xiàn)在的進制;原始值’ | bc
#8進制數(shù)轉(zhuǎn)10進制數(shù) root@unassigned:~/test# echo 'ibase=8;120' | bc 80 #16進制數(shù)轉(zhuǎn)10進制數(shù) root@unassigned:~/test# echo 'ibase=16;50' | bc 80 #2進制數(shù)轉(zhuǎn)10進制數(shù) root@unassigned:~/test# echo 'ibase=2;1010000' | bc 80
進階
利用bc實現(xiàn)各進制相互轉(zhuǎn)換
echo “obase=目標(biāo)進制; ibase=原始進制; $((原始值))” | bc
#十進制值轉(zhuǎn)換為八進制 root@unassigned:~/test# echo "obase=8; ibase=10; $((120))" | bc 170 #十進制轉(zhuǎn)換為十六進制 root@unassigned:~/test# echo "obase=16; ibase=10; $((120))" | bc 78 #十進制轉(zhuǎn)換為二進制 root@unassigned:~/test# echo "obase=2; ibase=10; $((120))" | bc 1111000 #八進制轉(zhuǎn)換為二進制 root@unassigned:~/test# echo "obase=2; ibase=8; $((170))" | bc 1111000 #八進制轉(zhuǎn)換為十進制 root@unassigned:~/test# echo "obase=10; ibase=8; $((170))" | bc 120 #八進制轉(zhuǎn)換為十六進制 root@unassigned:~/test# echo "obase=16; ibase=8; $((170))" | bc 78 #二進制轉(zhuǎn)換為八進制 root@unassigned:~/test# echo "obase=8; ibase=2; $((1111000))" | bc 170 #二進制轉(zhuǎn)換為十進制 root@unassigned:~/test# echo "obase=10; ibase=2; $((1111000))" | bc 120 #二進制轉(zhuǎn)換為十六進制 root@unassigned:~/test# echo "obase=16; ibase=2; $((1111000))" | bc 78 #十六進制轉(zhuǎn)換為二進制 root@unassigned:~/test# echo "obase=2; ibase=16; $((78))" | bc 1111000 #十六進制轉(zhuǎn)換為八進制 root@unassigned:~/test# echo "obase=8; ibase=16; $((78))" | bc 170 #十六進制轉(zhuǎn)換為十進制 root@unassigned:~/test# echo "obase=10; ibase=16; $((78))" | bc 120
以上簡單介紹了shell下的進制轉(zhuǎn)換,下面再講一下Python中的進制轉(zhuǎn)換:
在python3中有以下進制轉(zhuǎn)換的方式,分別對應(yīng)不同的進制
十六進制hex(),十進制int(),八進制oct(),二進制bin()
值得注意的是,python更加靈活,其值也需要用對應(yīng)的前綴進行辨別
比如:
- 十六進制數(shù):
0xAA - 十進制數(shù):
10 - 八進制數(shù):
0o20 - 二進制數(shù):
0b110
以上四種進制,除了十進制無前綴,其余進制均有其前綴進行辨別,如0x,0o,0b
轉(zhuǎn)換效果展示:
>>> hex(120) '0x78' >>> hex(0o170) '0x78' >>> hex(0b1111000) '0x78' >>> int(0x78) 120 >>> oct(0x78) '0o170' >>> bin(0x78) '0b1111000'
就不完全一一列舉了,以上就是linux shell下和python3下對進制的轉(zhuǎn)換方法。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Canonical通過Flutter啟用Linux桌面應(yīng)用程序(推薦)
這篇文章主要介紹了Canonical通過Flutter啟用Linux桌面應(yīng)用程序,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
Linux 下載安裝VSCode 使用編程輸出當(dāng)前時間的方法
這篇文章主要介紹了Linux 下載安裝VSCode 使用編程輸出當(dāng)前時間,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
linux lvm快照的正確mount掛載實現(xiàn)方式
這篇文章主要介紹了linux lvm快照的正確mount掛載實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-05-05
expect命令在linux下實現(xiàn)批量ssh免密
本次文章主要給大家講解了在linux系統(tǒng)下用expect命令實現(xiàn)批量ssh免密的實現(xiàn)方法,以及實際代碼分享。2017-11-11
Ubuntu18.04一次性升級Python所有庫的方法步驟
這篇文章主要介紹了Ubuntu18.04一次性升級Python所有庫的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

