不同進製數字轉換

2021-08-28 11:59:25 字數 4881 閱讀 6860

#將十進位制數轉換為二進位制

defdec2bin

(dec)

:if checkdec(dec)

:return

str(

bin(

int(dec)))

#將十進位制數轉換為八進位制

defdec2oct

(dec)

:if checkdec(dec)

:return

str(

oct(

int(dec)))

#將十進位制數轉換為十六進製制

defdec2hex

(dec)

:if checkdec(dec)

:return

str(

hex(

int(dec)))

#校驗十進位制數字

defcheckdec

(dec)

: matchobj = re.match(r'(0[dd])?[0-9]+$'

,dec)

if matchobj:

return

true

else

:return

false

測試用例

class

decmethodstest

(unittest.testcase)

:def

test_dec2bin

(self)

: self.assertequal(ipnumconvertmethods.dec2bin(

'10'),

'0b1010'

)def

test_dec2oct

(self)

: self.assertequal(ipnumconvertmethods.dec2oct(

'10'),

'0o12'

)def

test_dec2hex

(self)

: self.assertequal(ipnumconvertmethods.dec2hex(

'10'),

'0xa'

)

#將二進位制數轉換為十進位制

defbin2dec

(bin):

if checkbin(

bin)

:return

str(

int(

bin,2)

)else

:return

""#將二進位制數轉換為八進位制

defbin2oct

(bin):

if checkbin(

bin)

:return

str(

oct(

int(

bin,2)

))else

:return

""#將二進位制數轉換為十六進製制

defbin2hex

(bin):

if checkbin(

bin)

:return

str(

hex(

int(

bin,2)

))else

:return

""#校驗二進位制數字

defcheckbin

(bin):

matchobj = re.match(r'(0[bb])?[0-1]+$'

,bin

)if matchobj:

return

true

else

:return

false

測試用例

class

binmethodstest

(unittest.testcase)

:def

test_bin2dec

(self)

: self.assertequal(ipnumconvertmethods.bin2dec(

'1010'),

'10'

)def

test_bin2oct

(self)

: self.assertequal(ipnumconvertmethods.bin2oct(

'1010'),

'0o12'

)def

test_bin2hex

(self)

: self.assertequal(ipnumconvertmethods.bin2hex(

'1010'),

'0xa'

)

#將八進位制數轉換為十進位制

defoct2dec

(oct):

if checkoct(

oct)

:return

str(

int(

oct,8)

)else

:return

""#將八進位制數轉換為二進位制

defoct2bin

(oct):

if checkoct(

oct)

:return

str(

bin(

int(

oct,8)

))else

:return

""#將八進位制數轉換為十六進製制

defoct2hex

(oct):

if checkoct(

oct)

:return

str(

hex(

int(

oct,8)

))else

:return

""#校驗八進位制數字

defcheckoct

(oct):

matchobj = re.match(r'(0[oo])?[0-7]+$'

,oct

)if matchobj:

return

true

else

:return

false

測試用例

class

octmethodstest

(unittest.testcase)

:def

test_oct2bin

(self)

: self.assertequal(ipnumconvertmethods.oct2bin(

'12'),

'0b1010'

)def

test_oct2dec

(self)

: self.assertequal(ipnumconvertmethods.oct2dec(

'12'),

'10'

)def

test_oct2hex

(self)

: self.assertequal(ipnumconvertmethods.oct2hex(

'0o12'),

'0xa'

)

#將十六進製制數轉換為十進位制

defhex2dec

(hex):

if checkhex(

hex)

:return

str(

int(

hex,16)

)else

:return

""#將十六進製制數轉換為二進位制

defhex2bin

(hex):

if checkhex(

hex)

:return

str(

bin(

int(

hex,16)

))else

:return

""#將十六進製制數轉換為八進位制

defhex2oct

(hex):

if checkhex(

hex)

:return

str(

oct(

int(

hex,16)

))else

:return

""#校驗十六進製制

defcheckhex

(hex):

matchobj = re.match(r'(0[xx])?[0-9a-fa-f]+$'

,hex

)if matchobj:

return

true

else

:return

false

測試用例

class

hexmethodstest

(unittest.testcase)

:def

test_hex2bin

(self)

: self.assertequal(ipnumconvertmethods.hex2bin(

'0xa'),

'0b1010'

)def

test_hex2dec

(self)

: self.assertequal(ipnumconvertmethods.hex2dec(

'0xa'),

'10'

)def

test_hex2hex

(self)

: self.assertequal(ipnumconvertmethods.hex2oct(

'0xa'),

'0o12'

)

不同進製間的轉換

1 其他進製到十進位制 係數 就是每乙個位上的數值 基數 x進製的基數就是x 權 對每乙個位上的資料,從右,並且從0開始編號,對應的編號就是該資料的權。結果 係數 基數 權次冪之和。2 十進位製到其他進製 除基取餘,直到商為0,餘數反轉。3 進製轉換的快速轉換法 a 十進位制和二進位制間的轉換 84...

js 不同進製之間相互轉換

如果a進製與b進製都不等於10,則十進位製作為橋梁進行轉換 例如10進製的數字11 轉換為3進製為102 10進製的數字11 轉換為4進製為23 現在進行3進製轉4進製 1 3進製轉10進製 2 10進製轉4進製 在js裡。我們可以借助 parseint 跟 numberobject.tostrin...

不同進製大數之間的相互轉換

本文參考sjf0115 大數的進製轉換 根據之前所講的大數取餘演算法,我們可以再進一步寫乙個不同進製的大數相互轉化的演算法。我們約定大數用字元陣列的形式儲存。比如我們把十進位制數443轉換為三進製數,1.用被除數第一位的數對3取餘的第一位的餘數1,除以3得到商的第一位 2.用上一步得到的餘數乘以10...