Python十进制转任意进制(2-16)函数详解

def to_base(n, base):digits = "0123456789ABCDEF"  # 可支持到16进制if n == 0:return "0"result = ""while n > 0:result = digits[n % base] + resultn = n // basereturn result# 示例:将数字42转换为任意进制
n = 42
base = 7
print(to_base(n, base))  # 输出: 60 (42在7进制下是60)

这段代码的目的是将一个整数 n 转换为任意给定进制(base)的表示形式。通过自定义的 to_base 函数,能够支持任何从2到16的进制转换,甚至包括常见的二进制、八进制、十六进制。

让我们一步步详解这段代码的逻辑:

代码结构

def to_base(n, base):digits = "0123456789ABCDEF"  # 可支持到16进制if n == 0:return "0"result = ""while n > 0:result = digits[n % base] + resultn = n // basereturn result

1. digits 字符串

digits = "0123456789ABCDEF"

这行定义了一个字符串,包含了所有可能的数字字符(0-9 和 A-F)。这用于映射余数到相应的字符。最大支持十六进制(16进制),即在进制转换中,10对应字符 A11对应 B,依此类推,直到 15 对应 F

2. 处理 n == 0 的情况

if n == 0:return "0"

如果输入的数字 n0,直接返回字符串 "0"。因为在任何进制下,数字 0 的表示都是 0

3. 初始化 result 变量

result = ""

result 用于存储转换后的结果,它初始化为空字符串,最终将按从低位到高位的顺序将字符添加到这个字符串中。

4. while 循环 - 进行进制转换

while n > 0:result = digits[n % base] + resultn = n // base

这部分是核心逻辑,执行进制转换。每一次循环都会处理 n 中的最低位,并将其余数追加到 result 中。

  • n % base:取 n 除以 base 后的余数。这个余数代表当前位的值。例如,若 n = 42base = 7,那么 42 % 7 = 0,表示当前位在7进制下的数字。

  • digits[n % base]:根据余数,从 digits 字符串中提取相应的字符。例如,当 n = 42base = 742 % 7 = 0,此时 digits[0]"0"

  • result = digits[n % base] + result:将当前位的字符添加到 result 中。由于进制转换是从最低位开始的,所以每次都会将当前字符放到 result 的前面(即拼接在字符串前面)。

  • n = n // base:更新 n 为其除以 base 的整数部分(即去掉当前位的值)。例如,n = 42base = 742 // 7 = 6,这样就处理了 42 的最低位 0 后,剩下了 6

5. 返回结果

return result

循环结束后,result 存储了转换后的结果,按从高位到低位的顺序排列,最终返回该结果。

示例分析

n = 42
base = 7
print(to_base(n, base))  # 输出: 60 (42在7进制下是60)
第一次循环:
  • n = 42
  • 42 % 7 = 0,从 digits 中取到 digits[0],即 "0"
  • result = "0"
  • n = 42 // 7 = 6
第二次循环:
  • n = 6
  • 6 % 7 = 6,从 digits 中取到 digits[6],即 "6"
  • result = "6" + "0" = "60"
  • n = 6 // 7 = 0,循环结束
最终返回:
  • result = "60"

因此,数字 42 在7进制下表示为 "60",代码输出 60

总结

  • 这段代码通过取余和除法的方式逐位计算数字在指定进制下的表示。
  • 余数(n % base)代表当前位的值,通过查找 digits 字符串来获取字符。
  • 将每次计算出的字符添加到 result 中,最终构成完整的进制表示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PH热榜 | 2024-12-16

1. Animate AI 标语:动画系列剧集AI视频生成器 介绍:Animate AI 是一体化AI动画视频生成器,可以快速、轻松制作出动画系列视频。今天就免费开启你的创意之旅吧!轻松搞定! 产品网站: 立即访问 Product H…

VScode使用教程(菜鸟版)

目录 1.VScode是什么? 2.VScode的下载和安装? 2.1下载和安装 下载路径: 安装流程: 一、点击【Download for Windows】 二、等一小会儿的下载,找到并双击你下载好的.exe文件,开始进入安装进程 三、点…

【前端基础篇】JavaScript之DOM介绍

文章目录 前言WebAPI背景知识什么是WebAPI什么是APIAPI参考文档 DOM基本概念什么是DOMDOM树查找HTML元素方法概览1. document.getElementById(id)2.document.getElementsByTagName(name)3. document.getElementsByClassName(name)4. document.querySelector(CSS选择器)5. docum…

LabVIEW起落架震台检测

在现代飞机制造与维护过程中,起落架的性能测试是保障飞机安全的重要环节。通过LabVIEW开发的起落架小落震台检测系统,通过模拟飞机着陆过程,准确捕捉起落架在着陆时承受的各种动力学特性和应力响应,有效提升起落架设计的精度与可靠…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)

续上篇博客(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(上)----空间数据的编辑与处理(超超超详细!!!)-CSDN博客 继续更新 目录 什么是拓扑? 1.3.5道路拓…

libaom 源码分析:熵编码模块介绍

AV1 熵编码原理介绍 关于AV1 熵编码原理介绍可以参考:AV1 编码标准熵编码技术概述libaom 熵编码相关源码介绍 函数流程图 核心函数介绍 av1_pack_bitstream 函数:该函数负责将编码后的数据打包成符合 AV1 标准的比特流格式;包括写入序列头 OBU 的函数 av1_write_obu_header…

pset4filter less: helpers.c

(4)blur function 简单画图熟悉一下要做什么 可以看到3种情况,顶格,边界,里面如果分开算的话,是真的麻烦;但是当时还真的没有想到更好的,就先写一写(此处摘取…

【java】规则引擎

Java 规则引擎:Easy Rules 简介 优点 通过 Easy Rules 引入规则引擎的主要优点是解耦业务规则和代码逻辑: 无需修改代码,只需更新数据库中的规则即可。提供灵活、可扩展和可维护的方式处理复杂业务逻辑。 规则定义 Easy Rules 支持多种形…

满足你的个性化需求!ChatGLM4 模型微调教程

一、 大模型 ChatGLM4 简介 GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本。 在语义、数学、推理、代码和知识等多方面的数据集测评中, GLM-4-9B 及其人类偏好对齐的版本 GLM-4-9B-Chat 均表现出超越 Llama-3-8B 的卓越性能。 除了能进行多…

TCP基础了解

什么是 TCP ? TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。 面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的; 可靠的:无论…

如何测量分辨率

一、什么是分辨率? 分辨率指的是分清物体细节的能力。分辨率是一个成像系统还原空间频率的能力。一些人只是简单的用分辨率去描述极限分辨率,但是相机在在不同的对比度的情况下还原低,中和高频率的能力,也可以显示全面综合的信息。…

HCIA-Access V2.5_4_1_1路由协议基础_IP路由表

大型网络的拓扑结构一般会比较复杂,不同的部门,或者总部和分支可能处在不同的网络中,此时就需要使用路由器来连接不同的网络,实现网络之间的数据转发。 本章将介绍路由协议的基础知识、路由表的分类、静态路由基础与配置、VLAN间…

气象与旅游之间的关系,如果借助高精度预测提高旅游的质量

气象与旅游之间存在密切的关系,天气条件直接影响旅游者的出行决策、旅游体验和安全保障。通过高精度气象预测技术,可以有效提升旅游质量,为游客和旅游行业带来显著的优势。 1. 提高游客出行决策效率 个性化天气服务:基于高精度气象预测,旅游平台可以提供个性化的天气预报服…

【计算机视觉基础CV】03-深度学习图像分类实战:鲜花数据集加载与预处理详解

本文将深入介绍鲜花分类数据集的加载与处理方式,同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向,为读者提供从数据组织、预处理、加载到可视化展示的完整过程,并为后续模型训练打下基础。 前言 在计算机视觉的深…

数据结构之线性表1

2.1 线性表的定义和基本操作 1.线性结构的特点是:在数据元素的非空有限集中, (1)存在惟一的一个被称做“第一个”的数据元素; (2) 存在惟一的一个被称做“最后一个”的数据元素; &a…

信息安全实训室网络攻防靶场实战核心平台解决方案

一、引言 网络安全靶场,作为一种融合了虚拟与现实环境的综合性平台,专为基础设施、应用程序及物理系统等目标设计,旨在向系统用户提供全方位的安全服务,涵盖教学、研究、训练及测试等多个维度。随着网络空间对抗态势的日益复杂化…

关于分页的样式问题

在最近写网页的时候遇到了一个关于样式的问题,今天我来跟大家来说一下。像是分页中的颜色效果,斑马纹颜色要注意颜色不要过于深。 这种的颜色就有一点深看着很不舒服,应将当前的颜色改为淡一点的,也可以利用rgba调整透明度&#x…

一分钟快速了解什么是AEO海关认证

一分钟快速了解什么是AEO海关认证——这一术语,对于国际贸易领域的从业者而言,无疑是一个充满分量与价值的标签。AEO,即“Authorized Economic Operator”,中文译为“经认证的经营者”,是海关对信用状况、守法程度和安…

Python图注意力神经网络GAT与蛋白质相互作用数据模型构建、可视化及熵直方图分析...

全文链接:https://tecdat.cn/?p38617 本文聚焦于图注意力网络GAT在蛋白质 - 蛋白质相互作用数据集中的应用。首先介绍了研究背景与目的,阐述了相关概念如归纳设置与转导设置的差异。接着详细描述了数据加载与可视化的过程,包括代码实现与分析…

Java学习笔记(13)——面向对象编程

面向对象基础 目录 面向对象基础 方法重载 练习: 继承 继承树 protected super 阻止继承 向上转型 向下转型 区分继承和组合 练习 小结: 方法重载 如果有一系列方法,功能类似,只是参数有所不同,就可以把…