python进制转换学习笔记

本文详细介绍了Python中进行二进制、八进制、十进制和十六进制转换的基本函数bin()、oct()、int()和hex()的使用方法,包括它们的语法、实例及进制间的相互转换。此外,还讲解了如何通过字符串切片和format()函数去除转换结果的前缀,提供了实用的代码示例。
摘要由CSDN通过智能技术生成


前言

原理:python内置函数进行进制转换的原理是将读入的一个字符串(python默认读入的都是字符串形式)转为10进制,然后再用相关函数进行其他进制转换其中关于各进制之间的转换关系的学习,接下来我将较为详细的对其进行介绍。

一、基本进制类型

在这里插入图片描述

1.bin()函数

  • 描述
    bin() 返回一个整数 int 或者长整数 long int 的二进制表示。

  • 语法
    以下是 bin() 方法的语法:

    bin(x)
    
  • 参数

    x -- int 或者 long int 数字
    
  • 返回值
    字符串。

  • 实例
    以下展示了使用 bin 函数的实例:

  >>>bin(10)
     '0b1010'
  >>> bin(20)
     '0b10100'

2.oct()函数

  • 描述
    oct() 函数将一个整数转换成 8 进制字符串。

    Python2.x 版本的 8 进制以 0 作为前缀表示。
    Python3.x 版本的 8 进制以 0o 作为前缀表示。

  • 语法
    oct 语法:

    oct(x)
    

    参数说明:

      x -- 整数。
    
  • 返回值
    返回 8 进制字符串。

  • 实例
    以下实例展示了 oct 的使用方法:

实例(Python 2.0+)
>>> oct(10)
'012'
>>> oct(20)
'024'
>>> oct(15)
'017'
实例(Python 3.0+)
>>> oct(10)
'0o12'
>>> oct(20)
'0o24'
>>> oct(15)
'0o17'

3.int()函数

  • 描述
    int() 函数用于将一个字符串或数字转换为整型。

  • 语法
    以下是 int() 方法的语法:

    class int(x, base=10)
    
  • 参数

    x -- 字符串或数字。
    base -- 进制数,默认十进制。
    
  • 返回值
    返回整型数据。

  • 实例
    以下展示了使用 int() 方法的实例:

>>>int()               # 不传入参数时,得到结果0
0
>>> int(3)
3
>>> int(3.6)
3
>>> int('12',16)     # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>> int('0xa',16)  
10  
>>> int('10',8)  
8

4.hex()函数

  • 描述
    hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。

  • 语法
    hex 语法:

    hex(x)
    

    参数说明:

    x -- 10进制整数
    
  • 返回值
    返回16进制数,以字符串形式表示。

  • 实例
    以下实例展示了 hex 的使用方法:

>>>hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> hex(1L)
'0x1L'
>>> hex(12)
'0xc'
>>> type(hex(12))
<class 'str'>      # 字符串

二、进制之间的转换关系

1.二进制转换其他进制

  • 二进制转换八进制

    2进制转换成8进制:oct(int(n,2))
    
    n=input()
    print(oct(int(n,2)))
    
      输入: 1010
      输出: 0o12
    
  • 二进制转换十进制

    2进制转换成10进制:int(n,2)
    
    n=input()
    print(int(n,2))
    
      输入:1010
      输出:10
    
  • 二进制转换十六进制

    2进制转换成16进制:hex(int(n,2))
    
    n=input()
    print(hex(int(n,2)))
    
      输入:1010
      输出:0xa
    

2.八进制转换其他进制

  • 八进制转换二进制

    8进制转换成2进制:bin(int(n,8))
    
    n=input()
    print(bin(int(n,8)))
    
      输入:1010
      输出:0b1000001000
    
  • 八进制转换十进制

    8进制转换成10进制:int(n,8)
    
    n=input()
    print(int(n,8))
    
      输入:1010
      输出:520
    
  • 八进制转换十六进制

    8进制转换成16进制:hex(int(n,16))
    
    n=input()
    print(hex(int(n,8)))
    
      输入:1010
      输出:0x208
    

3.十进制转换其他进制

说明:10进制转换可以直接采取上述表格中的形式,读入字符串,先转换为10进制的数,再用函数进行操作转换成其他进制。
但同时可以这样操作,读入的时候直接进行强制类型转换操作,转为int类型(python中的int类型的数据就是10进制)

  • 十进制转换二进制

    10进制转换成2进制:bin(n)

    n=int(input())
    print(bin(n))
    
      输入:10
      输出:0b1010
    
  • 十进制转换八进制

    10进制转换成8进制:oct(n)
    
    n=int(input())
    print(oct(n))
    
      输入:10
      输出:0o12
    
  • 十进制转换十六进制

    10进制转换成16进制:hex(n)
    
    n=int(input())
    print(hex(n))
    
      输入:10
      输出:0xa
    

4.十六进制转换其他进制

  • 十六进制转换二进制

    16进制转换成2进制:bin(int(n,16))
    
    n=input()
    print(bin(int(n,16)))
    
      输入:a
      输出:0b1010
    
  • 十六进制转换八进制

    16进制转换成8进制:oct(int(n,16))
    
    n=input()
    print(oct(int(n,16)))
    
      输入:a
      输出:0o12
    
  • 十六进制转换十进制

    16进制转换成10进制:int(n,16)
    
    n=input()
    print((int(n,16)))
    
      输入:a
      输出:10
    

注意:我们可以发现,除了转换成10进制的数,其他的进制转换结果都带有前缀,2进制是0b,8进制是0o,16进制是0x。但是我们在绝大部分使用进制转换后的数据时,是不需要它的前缀的。所以笔者这里介绍两种方法,去掉它的前缀。

三、去前缀方法

1.使用字符串切片

  • 原理
    就是将进制转换后得到的结果对其进行字符串切片操作,将得到的结果从第三个字符开始取结果即可,这样我们可以得到不带前缀的结果

  • 举例

//10进制转换成2进制
n=int(input())
print(bin(n)[2:])//切片操作
输入:10
输出:1010
//10进制转换成8进制
n=int(input())
print(oct(n)[2:])//切片操作
输入:10
输出:12
//10进制转换成16进制
n=int(input())
print(hex(n)[2:])//切片操作
 
输入:10
输出:a

笔者这里以10进制转换其他进制进行了举例,其他的情况类比即可。

2.运用format()函数格式化数字

  • 说明
    首先,笔者在前面说过,不同类型的进制转换的原理时先转换为十进制,然后再用相关的函数进行禁止转换操作,而format函数里面有格式化数字的方法可以直接实现进制转换的功能,下面一一介绍:

  • 其他类型转换为2进制
    操作:在format函数的槽中添加一个b 即可实现其他类型对2进制的转换,下面举例说明

    n=input()
    print("{:b}".format(int(n,8)))
    //先将8进制的数转换为10进制,
    //然后在format的槽中添加一个b,等价于实现了bin函数的功能
    //但是此结果是不带有0b前缀的
    
      输入:1010
      输出:1000001000
    
  • 其他类型转换为8进制
    操作:在format函数的槽中添加一个o 即可实现其他类型对8进制的转换,下面举例说明

    n=input()
    print("{:o}".format(int(n,16)))
    //先将一个16进制数转换为10进制
    //然后利用format函数格式化数字方法转换即可
    
      输入:a
      输出:12
    
  • 其他类型转换为16进制
    操作:在format函数的槽中添加一个x 即可实现其他类型对2进制的转换,下面举例说明

    n=input()
    print("{:x}".format(int(n,8)))
    //先将一个8进制的数转换为16进制
    //然后原理同上
    
      输入:1010
      输出:208
    

注意:由于转换成10进制本来就是不带前缀的,无需用format格式化数字方法控制

总结

本篇学习笔记参考
https://blog.csdn.net/weixin_43353539/article/details/89444838

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值