Python學習:將N進位制數轉換為M進位制數
題目描述
程式設計實現將一個N進位制數轉換成M進位制數。
問題分析
將N進位制數轉換為M進位制數的一個直接的方法就是將N進位制數首先轉換為十進位制數,再從十進位制數往M進位制轉換。這樣相當於把十進位制當做一箇中間狀態來實現N進位制到M進位制的轉換,很大程度上簡化了問題。
程式碼實現
方法一:可實現任意進位制轉換
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Name: demo27.py
# Author: zhuzhuzhu time:2018/5/29
# Connect: [email protected]
# Desc : 將N進位制數轉換為M進位制數
# Version:python3
def conversion_num(num, src, dest):
rtn = ''
# 1、校驗源(N進位制)和目標(M進位制)是否相同
if src == dest:
rtn = num
# 2、轉成10進位制#
if src != 10:
num_str = str(num)
# 將列表翻轉
num_str = num_str[::-1]
exe_num = 0
dec_num = 0
# 從最後一位數開始
for num_char in num_str:
# 十六進位制處理
if num_char == 'A':
num_char = '10'
elif num_char == 'B':
num_char = '11'
elif num_char == 'C':
num_char = '12'
elif num_char == 'D' :
num_char = '13'
elif num_char == 'E':
num_char = '14'
elif num_char == 'F':
num_char = '15'
num_int = int(num_char)
if exe_num == 0:
dec_num += num_int
else:
dec_num += src ** exe_num * num_int
exe_num += 1
# 得到給定數字的十進位制形式
num = dec_num
# 3、轉成目標進位制
# 判斷目標進位制是否為十進位制
if dest == 10:
rtn = num
else:
num = int(num)
while True:
divisor = num // dest
remainder = num % dest
# 十六進位制處理
if remainder == 10:
remainder = 'A'
elif remainder == 11:
remainder = 'B'
elif remainder == 12:
remainder = 'C'
elif remainder == 13:
remainder = 'D'
elif remainder == 14:
remainder = 'E'
elif remainder == 15:
remainder = 'F'
rtn = str(remainder) + rtn
if divisor <= 0:
break
else:
num = divisor
# 4、處理空的字串
if rtn == '':
rtn = '0'
return rtn
new_num = conversion_num('011', 2, 10)
print(new_num)
方法二:利用python內建函式(僅適用於目標進製為二進位制,八進位制,十六進位制的情況)
def conversion_num(num, src, dest):
rtn = ''
# 1、校驗源和目標是否相同
if src == dest:
rtn = num
# 2、轉成10進位制
if src != 10:
dec_num = 0
if src == 2:
dec_num = int(num, 2)
elif src == 8:
dec_num = int(num, 8)
elif src == 16:
dec_num = int(num, 16)
num = dec_num
# 3、轉成目標進位制
if dest == 10:
rtn = num
else:
if dest == 2:
rtn = bin(num)
elif dest == 8:
rtn = oct(num)
elif dest == 16:
rtn = hex(num)
# 4、處理空的字串
if rtn == '':
rtn = '0'
return rtn
new_num = conversion_num('111111', 2, 16)
print(new_num)
說明
相關推薦
Python學習:將N進位制數轉換為M進位制數
題目描述 程式設計實現將一個N進位制數轉換成M進位制數。 問題分析 將N進位制數轉換為M進位制數的一個直接的方法就是將N進位制數首先轉換為十進位制數,再從十進位制數往M進位制轉換
Ex 2_25 n位十進制整數轉換為二進制形式..._第四次作業
運行時 es2017 整數 cnblogs 二進制 .cn http bsp alt (a) 當n=1時,(10)d=(1010)b 當n=2時,(100)d=(10)d x (10)d=(1010)b x (1010)b 當n=4時,(
c語言將十進位制數轉換為16進位制的函式
有3種方式實現,其中兩種是使用系統函式,另一種是直接自己編寫。 使用系統函式實現要加入#include <stdlib.h>,自己編寫則不需要這個標頭檔案。 下面的程式碼就是3種方式的實現,包括2位的整數和任意整數(2的31次方以內)都可以。可自己選擇需要的實現
將一個十進位制資料轉換為M進位制
題目描述 【問題描述】 用遞迴演算法將一個十進位制數X轉換成任意進位制數M(M<=16)。 其中X最大為7位整數 【輸入樣例】 31 16 {將十進位制31轉化為十六進位制數} 【輸出樣例
用棧實現將十進位制數轉換為任意進位制數(2,8,16...).
解題思路:假如N為輸入的數,n為要轉換為的進位制,若要將十進位制231轉換為8進位制數,過程如下; N N/n N%n 231 28
Java如何將十六進制數轉換為十進制數的程序
swift int i++ 進制數 pub 原理 lin uppercase enter package com.swift; import java.util.Scanner; public class Hex2Decimal { public stati
超長的十六進位制數轉換為八進位制
之前在oj上做過,今天做藍橋杯基礎練習又遇到了這題 but沒有一遍AC 基礎練習 十六進位制轉八進位制 時間限制:1.0s 記憶體限制:512.0MB 提交此題 錦囊1 錦囊2 問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。 輸入格式 輸入的第一行為一個正整數
mysql16進位制資料轉換為10進位制資料
需求:表中的資料的16進位制儲存在資料庫中,先需要將資料按照10進位制進行輸出解決方法:使用mysql自帶的conv函式進行資料轉換語法如下:conv(N,from base ,to base)例項1:SELECT conv( '0a', 16, 10 )例項2:set @n = "0926F281";sel
16位2進位制補碼轉換為10進位制
// // main.c // 16位2進位制補碼轉換為10進位制 // // Created by LongMa on 15/8/7. // Copyright (c) 2015年 itcast. All rights reserved. /* 1.十進位制值 == 各位權之和; 權(用陣列儲存)
python urlparse庫將application/x-www-form-urlencoded轉換為字典
data of type application/x-www-form-urlencoded轉換為字典形式 python官網有解釋:https://docs.python.org/2/library/urlparse.html urlparse.parse_qs(qs[
Python,將Unicode16進位制編碼轉換為漢字方式和注意點
第一種: eval1 = eval("u" + "\'" + text + "\'") 第二種 b = bytes("abc", 'utf8') print(b.decode('utf8')) 第三種 和第一種一樣 a = '\u5386\u9633\u9547' 爬蟲得
組合語言學習之路(7)------------輸入10進位制數,將其轉換為2進位制數,存放在ax中,再將其轉換為ASCII碼並輸出
data segment inf1 db "please input a number(1-361):$" ibuf db 7,0,6 dup(0) obuf db 6 dup(0) data ends c
Python學習:函數進階
eva hide con span money 技術分享 from 內部 size 本節要點:命名空間及作用域,函數嵌套,函數名本質,閉包 命名空間: 命名空間的本質:存放名字與值的綁定關系。 三種命名空間: 全局命名空間 局部命名空間 內置命名空間 三種命
將bx中的二進位制數轉換為十六進位制輸出
binihex proc near mov ch,4 rotate: mov cl,4 rol bx,cl mov al,bl and al,0fh add al,30h cmp al,3ah jl printit add al,7h printit: mov dl,al mov ah
如何將10進位制資料儲存為2進位制資料(IMG2LCD的使用,pic2bin)
背景 fpga處理大資料時從txt讀取資料形式為2進位制或者16進位制,&readmemb/&readmemh,所以需要將資料轉換為二進位制或十六進位制存在txt中。 針對影象而言可以參考exe>IMG2LCD 下
c語言的n進位制轉換為10進位制
#include<string.h> int main() {long t1; int i,n,t,t3; char a[100]; printf("please input anumber string:\n"); gets(a); strupr(a); t3=
將一個十六進位制字串轉換為十進位制數值的問題
在程式中,我們有時需要將一個十六進位制字串轉換為十進位制數字。比如: char *ptr="0x11"; int n=0; //我們想讓n等於0x11,即17 通常我們在C中,想將一個字串轉換為一整形
藍橋杯之N進位制轉換為R進位制
#include <iostream> #include <cstdio> #include<algorithm> using namespace std; char a[105]; int main() { int N,R,ans; cin>>N
如何將double型數值轉換為16進位制的形式
昨天程式設計序遇到一個隨機生成的uid,怎麼都不知道怎麼生成的,最後用了HttpAnalyzerstdv7查了一下,原來是在js中生成的,為了模擬js,筆者將其內部函式看了一下,發現有程式碼中有一double型變數,將其轉換成為了16進位制,當時那個糾結啊,浪費了那麼多時間
將utf-8格式的漢字轉換成16進位制
//字串轉換成16進位制 function str2hex($str){ $hex = ''; for($i=0,$length=mb_strlen($str); $i<$length; $i++){ $hex .= dechex(or