Python中不同进制间的转换
Python中不同进制间的转换
一、不同进制在计算机科学、数学和其他领域中具广泛的应用。以下是一些常见的应用:
1. 二进制(base-2): 在计算机系统中,数据以二进制形式存储和处理。二进制由0和1组成,是数字电子技术的基础。
2. 十进制(base-10): 十进制是我们平常使用的数字系统,它由0到9这些数字组成。十进制在日常生活中用于计算和表示数量。
3. 八进制(base-8) 八进制使用0到7这几个数字表示数值。它在计算机编程中经常用于表达特殊位模式、字节权限和文件权限等。
4.十六进制(base-16): 十六进制使用0到9的数字和A到F的六个字母表示数值。它在计算机科学中被广泛用于表达内存地址、颜色代码和二进制数据的可读形式。
进制转换: 在计算机科学中,需要进行不同进制之间的转换。例如,将十进制数转换为二进制或十六进制,或者将二进制数转换为十进制。
除了上述应用外,进制还在信息理论、密码学、逻辑电路设计和图形处理等领域中发挥着重要作用。进制概念的灵活运用可以增强数据表示和处理的效率,以及解决特定问题所需的编程技巧。
二、在Python中,可以使用以下函数进行不同进制之间的转换:
1.bin(): 将整数转换为二进制字符串。
print(bin(10)) # 输出: '0b1010'
2.oct(): 将整数转换为八进制字符串。
print(oct(10)) # 输出: '0o12'
3.hex(): 将整数转换为十六进制字符串。
print(hex(10)) # 输出: '0xa'
4.int(): 将字符串按指定进制转换为整数。
print(int(1010,2)) # 输出: 10
print(int(1010,8)) # 输出: 10
print(int('a',16)) # 输出: 10
这些函数可用于在不同进制之间转换数字。bin()、oct()和 hex()函数将整数转换为相应进制的字符串,而 int()函数将指定进制字符串转换为整数。
三、在Python直接使用函数进行进制转换非常方便快捷。但对于初学者来说,还是要认真学习进制转换的底层运算原理。
将十进制数转换为任意进制(base)的原理是取余操作。
首先,我们从给定的十进制数开始。然后,通过连续地进行“整除并记录余数”的操作,获得在指定进制下各个位上的数字或字符。这个过程持续到十进制数变为0为止。
具体操作步骤如下:
1. 将给定的十进制数除以指定的进制(base),并记录所得的商和余数。
2. 将余数对应的数字(如果是大于9的数字,则对应于字母)作为 base 进制数的最低位值。
3. 将商继续除以指定进制,并将该步骤中得到的余数添加到首位。重复此步骤直到商变为零。
4. 得到的结果就是将十进制数转换为 base 进制的表达形式。
例如,将十进制数 10 转换为二进制(base=2),我们可以执行以下步骤:
10 ÷ 2 = 5 余 0 0
5 ÷ 2 = 2 余 1 10
2 ÷ 2 = 1 余 0 010
1 ÷ 2 = 0 余 1 1010
从最后一步开始,我们依次读取每个余数,结果就是二进制数 1010。因此,10二进制表示为 1010。
同样的原理适于将十进制数转换为任意指定的 base 进制。根据不同的进制,可使用不同的数字或字符表示位值。这种整除和取余的方法使我们能够在将任意十进制数转换为各种进制时进行有效的计算和转换。
以下是使用循环手动实现进制转换的示例代码:
# 将10进制数decimal转换为base进制的函数
def decimal_to_base(decimal, base):if not isinstance(decimal, int) or not isinstance(base, int) or base < 2:raise ValueError("Invalid inputs") # 检查输入是否有效,如果无效则引发异常digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" # 存储各个位上的数字或字母if decimal == 0:return '0' # 如果十进制数为0,则直接返回字符串'0'result = ''negative = Falseif decimal < 0:negative = Truedecimal = abs(decimal) # 处理负数情况,转换为正数进行计算while decimal > 0:remainder = decimal % base # 取余数result = digits[remainder] + result # 将余数对应的字符拼接到结果字符串的左侧(考虑进制转换后顺序倒过来)decimal = decimal // base # 整除以进行下一位的计算if negative:result = '-' + result # 如果原始数是负数,则在结果字符串前添加负号return result # 返回转换后的结果字符串# 调用函数进行测试
print(decimal_to_base(10597059, 16)) #输出结果:A1B2C3
print(decimal_to_base(10597059, 8) #输出结果:50331303
print(decimal_to_base(10597059, 2)) #输出结果:101000011011001011000011
以上函数可以将一个十进制数转换为任意指定进制的字符串表示形式。只需传递要转换的十进制数和目标进制作为参数即可。
将任意进制(base)数转换为十进制的原理是加权求和。
从给定的 base 进制数的最低位开始,将每个位的值乘以对应的权重,并对所有位的结果进行累加。权重由 base 的幂决定,从右到左逐渐递增。
具体的步骤如下:
1. 从给定的 base 进制数的最低位开始,将每个位的值与重相乘。
2. 对所有位的乘积求和,得到最终的十进制表示。
例如,将二进制数 1010 转换为十进制,可以执行以下步骤:
(1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0)
= 8 + 0 + 2 + 0
= 10
因此,二进制数 1010 在十进制表示为 10。
同样的原理适用于将任意指定的 base 进制数转换为十进制。根据每个位上的值和对应的权重,可以通过加权求和的方法有效地计算和转换为十进制。这种加权求和的方法使我们能够在将各种进制转换为十进制时进行有效的计算和转换。
以下是使用循环手动实现将任意进制转换为10进制的代码:
# 将base进制数number转换为10进制的函数
def base_to_decimal(number, base):if not isinstance(number, str) or not isinstance(base, int) or base < 2:raise ValueError("Invalid inputs") # 检查输入是否有效,如果无效则引发异常digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" # 存各个位上的数字或字母number = number.upper() # 将输入的字符串转换为大写,以便与 digits 字符串中的字符进行匹配decimal = 0 # 初始化十进制数为0power = 0 # 初始化权重(指数)为0for digit in reversed(number): # 对于从右到左的每个数字字符if digit not in digits or digits.index(digit) >= base:raise ValueError("Invalid input") # 如果字符不在 digits 中或其索引超过等于指定 base 的范围,则引发异常decimal += digits.index(digit) * (base ** power) # 将该位上的值乘以权重,并将其累加到当前的十进制数中power += 1 # 增加权重(指数)return decimal # 返回转换后的十进制数
# 调用函数进行测试
print(base_to_decimal("A1B2C3", 16)) #输出结果:10597059
print(base_to_decimal("50331303", 8)) #输出结果:10597059
print(base_to_decimal("101000011011001011000011", 2)) #输出结果:10597059
以上函数可以将任意进制的数字字符串转换为十进制。只需传递要转换的数字和当前进制作为参数即可。
相关文章:
Python中不同进制间的转换
Python中不同进制间的转换 一、不同进制在计算机科学、数学和其他领域中具广泛的应用。以下是一些常见的应用:1. 二进制(base-2): 在计算机系统中,数据以二进制形式存储和处理。二进制由0和1组成,是数字电子技术的基础…...

物流监管:智慧仓储数据可视化监控平台
随着市场竞争加剧和市场需求的不断提高,企业亟需更加高效、智能且可靠的仓储物流管理方式,以提升企业的物流效率,减少其输出成本,有效应对市场上的变化和挑战。 图扑自研 HT for Web 产品搭建的 2D 智慧仓储可视化平台,…...

C++对象模型(19)-- 函数语义学:成员函数
1、普通成员函数的调用 1.1 调用方式的转换 为了提高普通成员函数的调用效率,在C中,对普通成员函数的调用,会转换成对全局函数的调用。 假如有下面所示的成员函数: class Test { public:int m_i;int func(int a) {m_i a;retu…...

AI只需26秒,就可以设计一款会走路的机器人
由西北大学、麻省理工学院和佛蒙特大学组成的一支科研团队首次开发出一种可以完全自行设计机器人的 AI 算法。 这一 AI 算法不仅运行速度快,还可在个人计算机上运行,并从头开始设计全新的结构。只需告诉AI“我们想要一个可穿越陆地的机器人”,…...
简单实现spring的set依赖注入
Maven依赖: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0…...
STM32 HAL库函数——HAL_TIM_Base_Start_IT()详解
以STM32G030C8T6中的HAL_TIM_Base_Start_IT()函数为例,进行解释; 文章目录 一、函数原型和源代码二、函数用法详解:2.1 参数2.1.1 TIM_HandleTypeDef结构体详解 2.2 使用场景:2.3 使用方法: 三、函数使用示例ÿ…...

C语言之通讯录的实现篇优化版
目录 动态内存管理 通讯录声明 静态版本 动态版本 初始化通讯录 静态版本 动态版本 Add增加通讯录 静态版本 动态版本 Checkcapacity增容 DestroyContact释放动态空间 文件操作 SaveContact保存信息到文件中 初始化通讯录 旧版本 文件版本 LoadContact加载…...

C++17中std::string_view的使用
为了解决std::string初始化(或拷贝)成本高昂的问题,C17引入了std::string_view。std::string_view提供对现有字符串(C风格字符串、std::string、或另一个std::string_view)的只读访问,而无需进行拷贝。当想要有效地处理和操作字符串而不修改它们时&#…...

C#,数值计算——分类与推理Phylo_nj的计算方法与源程序
1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Phylo_nj : Phylagglom { public double[] u; public override void premin(double[,] d, int[] nextp) { i…...

element-ui 图片压缩上传
picture.js export const compressImgNew (file) > {return new Promise(resolve > {const reader new FileReader()const image new Image()image.onload (imageEvent) > {const canvas document.createElement(canvas) // 创建画布const context canvas.getCo…...

【Java 进阶篇】Java XML约束:确保数据一致性和有效性
XML(可扩展标记语言)是一种常用的数据交换格式,用于存储和交换数据。然而,为了确保数据的一致性和有效性,通常需要定义XML约束。XML约束是一种规则集,定义了XML文档的结构、元素、属性和数据类型。本篇博客…...

第一章概述
一、学习目的与要求 本章对软件测试作了概括性的介绍,目的是使学生对软件测试有个初步的认识。通过本章的学习,应使学生掌握软件测试的基本概念,了解软件测试的发展历程和行业现状,掌握软件测试技术的分类,理解软件测试…...

XCode15与iOS17/17.1 真机测试问题处理
XCode15与iOS17/17.1 真机测试问题处理,网上相关博客很多,摘录了如下实践后能起作用的地址如下:Xcode 15 报错处理 - 简书iOS17版本适配-CSDN博客 Xcode15适配-六虎 主要介绍下:Assertion failure in void _UIGraphicsBeginImag…...

使用 Rust 和 cURL 库下载程序
以下是一个使用 Rust 和 cURL 库的下载器程序,用于下载 图像。此程序使用了 https://www.duoip.cn/get_proxy 的代码。 extern crate curl; use std::io::{self, Read}; use std::error::Error; fn main() {let url "https://www.baidu.com";let …...

三维模型表面积计算方法
【版权声明】 本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。 更多算法总结请关注我的博客:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。 本文章来自于专栏《Python三维模型处理基础》的系列文…...

unity脚本_力 c#
创建一个脚本 将代码挂载到物体上 取消物体的重力 运行即向z轴运动 加力之后 是否停止是由阻力影响 如果阻力为零 则会一直运动 如果希望就算有阻力也让物体一直动就将加力代码放在Update函数里 using UnityEngine; public class Power : MonoBehaviour{ Rigidbody rigidBo…...
LeetCode 面试题 10.05. 稀疏数组搜索
文章目录 一、题目二、C# 题解 一、题目 稀疏数组搜索。有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置。 示例1: 输入: words [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”…...

分类预测 | MATLAB实现基于BiLSTM-AdaBoost双向长短期记忆网络结合AdaBoost多输入分类预测
分类预测 | MATLAB实现基于BiLSTM-AdaBoost双向长短期记忆网络结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于BiLSTM-AdaBoost双向长短期记忆网络结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于BiLSTM-…...
Sobel算子详解及例程
Sobel算子是一种经典的边缘检测算子,被广泛应用于图像处理领域。它基于图像亮度的变化率来检测边缘的位置,主要通过计算图像中像素点的梯度来实现。 Sobel算子分为水平和垂直两个方向的算子,记作Gx和Gy。它们分别对图像进行水平和垂直方向的…...

ScrapeKit 和 Swift 编写程序
以下是一个使用 ScrapeKit 和 Swift 编写的爬虫程序,用于爬取 图片。同时,我们使用了proxy 这段代码来获取代理。 import ScrapeKit class PeopleImageCrawler: NSObject, ScrapeKit.Crawler {let url: URLlet proxyUrl: URL init(url: URL, proxy…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...