Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Kantalukujärjestelmien muunnokset Pythonilla
- # Juhani Kaukoranta, 21.4.201
- # MuunnosNtoM(nluku,n,m) muuntaa n-kantaisen m-kantaiseksi
- # esim MuunnosNtoM("8A4B",16,8)
- # muuntaa 16-järjestelmän luvun 8A4B
- # 8-kantaiseksi, tuloksena '105113'
- def MuunnosNto10(nluku,n):
- # nluku muunnetaan 10-järjestelmän luvuksi
- # nluku muunnettava luku, esim "8A4B"
- # n muunnettavan kantaluku, esim 16
- nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- m = len(nluku) # pituus, merkkien lukumäärä
- s = 0 # kerää summaa
- for i in range(0,m):
- j = nro.find(nluku[i])
- s = s + j*n**(m-i-1) # merkin osuus summasta
- return s
- def Muunnos(a,n):
- # 10-kantainen a muunnetaan n-kantaiseksi
- nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- A = "" # merkkijono A , alustetaan, antaa lopulta tuloksen
- x = a
- temp = x // n
- while temp >= 0:
- if x-temp*n < 62:
- newnum = nro[x-temp*n]
- else:
- newnum = str(x-temp*n-1)
- A = newnum+A
- x = temp
- temp = x // n
- if temp == 0:
- if x < 62:
- newnum = nro[x]
- else :
- newnum = str(x-1)
- A = newnum + A
- return A
- def MuunnosNtoM(nluku,n,m):
- # n-kantainen luku m-kantaiseksi
- n10luku = MuunnosNto10(nluku,n)
- return Muunnos(n10luku,m)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement