linux下如何進(jìn)制的相互轉(zhuǎn)換
linux下進(jìn)制的相互轉(zhuǎn)換
linux下十六進(jìn)制,十進(jìn)制,八進(jìn)制,二進(jìn)制的相互轉(zhuǎn)換
不同進(jìn)制的特殊符號(hào)
如下:
- 二進(jìn)制:數(shù)字前綴為
0b
或0B
,字符集為0
和1
。 - 八進(jìn)制:數(shù)字前綴為
0o
(零),字符集為0
到7
。 - 十進(jìn)制:沒(méi)有數(shù)字前綴,字符集為
0
到9
。 - 十六進(jìn)制:數(shù)字前綴為
0x
或0X
,字符集為0
到9
和A
到F
(大小寫(xiě)都可以)。
下面是一些示例:
- 二進(jìn)制數(shù)字
1101
可以表示為0b1101
或0B1101
。 - 八進(jìn)制數(shù)字
16
可以表示為020
或0o20
,其中前綴0
表示它是一個(gè)八進(jìn)制數(shù)字。 - 十進(jìn)制數(shù)字
42
不需要前綴。 - 十六進(jìn)制數(shù)字
1A
可以表示為0x1A
或0X1a
。
需要注意的是:
- 在編寫(xiě)程序時(shí),應(yīng)在數(shù)字前加上正確的前綴,以明確數(shù)字的進(jìn)制。
- 否則,計(jì)算機(jī)可能會(huì)將它們解釋為不同進(jìn)制的數(shù)字。
在linux shell上進(jìn)行進(jìn)制轉(zhuǎn)換
各進(jìn)制轉(zhuǎn)10進(jìn)制:
方法一:echo $((現(xiàn)在的進(jìn)制#原始值))
#2進(jìn)制數(shù)轉(zhuǎn)10進(jìn)制數(shù) root@unassigned:/# echo $((2#1011)) 11 #8進(jìn)制數(shù)轉(zhuǎn)10進(jìn)制數(shù) root@unassigned:/# echo $((8#13)) 11 #16進(jìn)制數(shù)轉(zhuǎn)10進(jìn)制數(shù) root@unassigned:/# echo $((16#B)) 11
方法二:echo ‘ibase=現(xiàn)在的進(jìn)制;原始值’ | bc
#8進(jìn)制數(shù)轉(zhuǎn)10進(jìn)制數(shù) root@unassigned:~/test# echo 'ibase=8;120' | bc 80 #16進(jìn)制數(shù)轉(zhuǎn)10進(jìn)制數(shù) root@unassigned:~/test# echo 'ibase=16;50' | bc 80 #2進(jìn)制數(shù)轉(zhuǎn)10進(jìn)制數(shù) root@unassigned:~/test# echo 'ibase=2;1010000' | bc 80
進(jìn)階
利用bc實(shí)現(xiàn)各進(jìn)制相互轉(zhuǎn)換
echo “obase=目標(biāo)進(jìn)制; ibase=原始進(jìn)制; $((原始值))” | bc
#十進(jìn)制值轉(zhuǎn)換為八進(jìn)制 root@unassigned:~/test# echo "obase=8; ibase=10; $((120))" | bc 170 #十進(jìn)制轉(zhuǎn)換為十六進(jìn)制 root@unassigned:~/test# echo "obase=16; ibase=10; $((120))" | bc 78 #十進(jìn)制轉(zhuǎn)換為二進(jìn)制 root@unassigned:~/test# echo "obase=2; ibase=10; $((120))" | bc 1111000 #八進(jìn)制轉(zhuǎn)換為二進(jìn)制 root@unassigned:~/test# echo "obase=2; ibase=8; $((170))" | bc 1111000 #八進(jìn)制轉(zhuǎn)換為十進(jìn)制 root@unassigned:~/test# echo "obase=10; ibase=8; $((170))" | bc 120 #八進(jìn)制轉(zhuǎn)換為十六進(jìn)制 root@unassigned:~/test# echo "obase=16; ibase=8; $((170))" | bc 78 #二進(jìn)制轉(zhuǎn)換為八進(jìn)制 root@unassigned:~/test# echo "obase=8; ibase=2; $((1111000))" | bc 170 #二進(jìn)制轉(zhuǎn)換為十進(jìn)制 root@unassigned:~/test# echo "obase=10; ibase=2; $((1111000))" | bc 120 #二進(jìn)制轉(zhuǎn)換為十六進(jìn)制 root@unassigned:~/test# echo "obase=16; ibase=2; $((1111000))" | bc 78 #十六進(jìn)制轉(zhuǎn)換為二進(jìn)制 root@unassigned:~/test# echo "obase=2; ibase=16; $((78))" | bc 1111000 #十六進(jìn)制轉(zhuǎn)換為八進(jìn)制 root@unassigned:~/test# echo "obase=8; ibase=16; $((78))" | bc 170 #十六進(jìn)制轉(zhuǎn)換為十進(jìn)制 root@unassigned:~/test# echo "obase=10; ibase=16; $((78))" | bc 120
以上簡(jiǎn)單介紹了shell下的進(jìn)制轉(zhuǎn)換,下面再講一下Python中的進(jìn)制轉(zhuǎn)換:
在python3中有以下進(jìn)制轉(zhuǎn)換的方式,分別對(duì)應(yīng)不同的進(jìn)制
十六進(jìn)制hex()
,十進(jìn)制int()
,八進(jìn)制oct()
,二進(jìn)制bin()
值得注意的是,python更加靈活,其值也需要用對(duì)應(yīng)的前綴進(jìn)行辨別
比如:
- 十六進(jìn)制數(shù):
0xAA
- 十進(jìn)制數(shù):
10
- 八進(jìn)制數(shù):
0o20
- 二進(jìn)制數(shù):
0b110
以上四種進(jìn)制,除了十進(jìn)制無(wú)前綴,其余進(jìn)制均有其前綴進(jìn)行辨別,如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下對(duì)進(jìn)制的轉(zhuǎn)換方法。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
CentOS 7.x NAT模式上網(wǎng)配置步驟詳解
本篇文章主要介紹了CentOS 7.x NAT模式上網(wǎng)配置步驟詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服務(wù)器
這篇文章主要介紹了Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服務(wù)器的相關(guān)資料,需要的朋友可以參考下2016-02-02VmWare安裝centos7無(wú)法上網(wǎng)的解決方法
這篇文章主要為大家詳細(xì)介紹了VmWare安裝centos7無(wú)法上網(wǎng)的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10Linux 查看磁盤(pán)IO并找出占用IO讀寫(xiě)很高的進(jìn)程
這篇文章主要介紹了Linux 查看磁盤(pán)IO并找出占用IO讀寫(xiě)很高的進(jìn)程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02Linux下安裝IPython配置python開(kāi)發(fā)環(huán)境教程
這篇文章主要為大家詳細(xì)介紹了Linux下安裝IPython配置python開(kāi)發(fā)環(huán)境教程,需要的朋友可以參考下2016-05-05CentOS7?minimal?最小化安裝網(wǎng)絡(luò)設(shè)置過(guò)程
這篇文章主要介紹了CentOS7?minimal?最小化安裝網(wǎng)絡(luò)設(shè)置過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12簡(jiǎn)要分析linux系統(tǒng)的啟動(dòng)過(guò)程
接觸linux系統(tǒng)運(yùn)維已經(jīng)好幾年了,常常被問(wèn)到linux系統(tǒng)啟動(dòng)流程問(wèn)題,這篇文章主要介紹了簡(jiǎn)要分析linux系統(tǒng)的啟動(dòng)過(guò)程,需要的朋友可以參考下2018-08-08