Advertisement
jukaukor

MuunnosNtoM.py

Apr 20th, 2021
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #Kantalukujärjestelmien muunnokset Pythonilla
  2. # Juhani Kaukoranta, 21.4.201
  3. # MuunnosNtoM(nluku,n,m) muuntaa n-kantaisen m-kantaiseksi
  4. # esim MuunnosNtoM("8A4B",16,8)
  5. # muuntaa 16-järjestelmän luvun 8A4B
  6. # 8-kantaiseksi, tuloksena '105113'
  7. def MuunnosNto10(nluku,n):
  8. # nluku muunnetaan 10-järjestelmän luvuksi
  9. # nluku muunnettava luku, esim "8A4B"
  10. # n muunnettavan kantaluku, esim 16
  11. nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  12. m = len(nluku) # pituus, merkkien lukumäärä
  13. s = 0 # kerää summaa
  14. for i in range(0,m):
  15. j = nro.find(nluku[i])
  16. s = s + j*n**(m-i-1) # merkin osuus summasta
  17. return s
  18.  
  19. def Muunnos(a,n):
  20. # 10-kantainen a muunnetaan n-kantaiseksi
  21. nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  22. A = "" # merkkijono A , alustetaan, antaa lopulta tuloksen
  23. x = a
  24. temp = x // n
  25. while temp >= 0:
  26. if x-temp*n < 62:
  27. newnum = nro[x-temp*n]
  28. else:
  29. newnum = str(x-temp*n-1)
  30. A = newnum+A
  31. x = temp
  32. temp = x // n
  33. if temp == 0:
  34. if x < 62:
  35. newnum = nro[x]
  36. else :
  37. newnum = str(x-1)
  38. A = newnum + A
  39. return A
  40. def MuunnosNtoM(nluku,n,m):
  41. # n-kantainen luku m-kantaiseksi
  42. n10luku = MuunnosNto10(nluku,n)
  43. return Muunnos(n10luku,m)
  44.  
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement