在Python中,非十进制数字的表示方式为:

二进制:前面加0b,如0b1001

八进制:前面加0o,如0o3562

十六进制:前面加0x,如0x2af3(字母a-f大小写随意)

不同进制数字可直接进行数学计算,结果返回十进制:

x=0b100     #二进制的4
y=0xa #十六进制的10
print(x+y,type(x),type(y)) 执行结果:14 <class 'int'> <class 'int'>

下面按照不同的进制说明相关的转换方法:

bin(binary:其他进制数字→0b开头的二进制字符串)

x=bin(100)
y=bin(0x2a)
print(x,type(x))
print(y,type(y)) 执行结果:
0b1100100 <class 'str'>
0b101010 <class 'str'>

oct(octonary:其他进制数字→0o开头的八进制字符串)

x=oct(100)
y=oct(0b100)
print(x,type(x))
print(y,type(y)) 执行结果:
0o144 <class 'str'>
0o4 <class 'str'>

hex(hexadecimal:其他进制数字→0x开头的十六进制字符串)

x=hex(100)
y=hex(0b100)
print(x,type(x))
print(y,type(y)) 执行结果:
0x64 <class 'str'>
0x4 <class 'str'>

int(integer:三种情况→十进制数字)

情况一:0?开头的其他进制数字→十进制数字

a=0b100
b=0xf
print(int(a))
print(int(b)) 执行结果:
4
15

情况二:0?开头的其他进制字符串→十进制数字

a='0b100'
b='0xf'
print(int(a,base=0))
print(int(b,0)) 执行结果:
4
15

情况三:不带0?的其他进制字符串→十进制数字

a='100'
b='f'
print(int(a,base=2))
print(int(b,16)) 执行结果:
4
15
int()的第一个参数 int()的第二个参数
0?开头的其他进制数字 不输
0?开头的其他进制字符串 必输base=0,或简写为0
不带0?的其他进制字符串 必输base=进制数,或简写为进制数

注意:bin、oct、hex都直接接一个参数且输出的都是字符串。int与这三个不同,它分三种情况,接一个或两个参数,且输出结果是数字。

x=0b101
y=str(x)
print(x,type(x))
print(y,type(y)) 执行结果:
5 <class 'int'>
5 <class 'str'>
注意:直接手输的0b、0o、0x开头的非十进制数字的数据类型都是int,对其print或转为字符串时,会先转化成十进制再转成字符串

补充:笔者自行推导的int2bin、bin2int

基于二进制与十进制的转化关系,笔者自己推导了输入、输出均为十进制数字的int2bin、bin2int函数:

int2bin:十进制转二进制(输入、输出均为十进制数字,如将十进制的7转换为十进制的111)

def int2bin(x):
s=''
while x>0:
s=s+str(x % 2)
x=x//2
return int(s[::-1])
print(int2bin(7))

bin2int:二进制转十进制(输入、输出均为十进制数字,如将十进制的111转换为十进制的7)

def bin2int(x):
y=str(x)
power = len(y)-1
s=0
for i in y:
s=s+int(i)*(2**power)
power-=1
return s
print(bin2int(111))

洗牌利器——random.shuffle()函数的更多相关文章

  1. [转]完美洗牌(Perfect Shuffle)问题

    [转]原博文地址:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/02.09.md ...

  2. 随机洗牌算法Knuth Shuffle和错排公式

    Knuth随机洗牌算法:譬如现在有54张牌,如何洗牌才能保证随机性.可以这么考虑,从最末尾一张牌开始洗,对于每一张牌,编号在该牌前面的牌中任意一张选一张和当前牌进行交换,直至洗到第一张牌为止.参考代码 ...

  3. np.random.random()系列函数

    1.np.random.random()函数参数 np.random.random((1000, 20)) 上面这个就代表生成1000行 20列的浮点数,浮点数都是从0-1中随机. 2.numpy.r ...

  4. np.random.random()函数 参数用法以及numpy.random系列函数大全

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.r ...

  5. 【转】np.random.random()函数 参数用法以及numpy.random系列函数大全

    转自:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.random((1000, 20) ...

  6. python 练习洗牌

    生成随机数需要引入random模块,学习下random模块中常用的几个函数: random.random() 用于生成一个0到1的随机符点数: 0 <= n < 1.0 random.un ...

  7. 【CUDA 基础】5.6 线程束洗牌指令

    title: [CUDA 基础]5.6 线程束洗牌指令 categories: - CUDA - Freshman tags: - 线程束洗牌指令 toc: true date: 2018-06-06 ...

  8. 文本数据挖掘---课后作业shuffle函数洗牌C++

    题目: 代码如下:#include <iostream> #include <random> #include <algorithm> #include <v ...

  9. 洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章<扫雷与算 ...

随机推荐

  1. java基础(八)之函数的复写/重写(override)

    复写的意思就是子类对父类的修改. 复写的条件: 1.在具有父子类关系的两个类当中:2.父类和子类各有一个函数,这两个函数的定义保持一致(返回值类型.函数名.参数列表) 还是老样子,3个文件来说明. P ...

  2. Java下载文件时文件名中的中文变成下划线,其他正常

    将 utf-8 转换成 ISO8859-1 编码 response.addHeader("Content-Disposition", "attachment;filena ...

  3. 安全文件传输协议之SFTP的使用

    一.SFTP概述 在前几篇文章,我们讲到了文件传输协议FTP(File Transfer Protocol),那也是使用比较广泛的文件服务器,但是我们需要知道,Linux系统并不自带FTP程序 如果要 ...

  4. 安装ipython[win/linux]

    首先以win7  64位系统, python2.7.9为例,linux见底部 1.下载材料http://files.cnblogs.com/files/smileyes/ipython-win64.z ...

  5. js无法监听input中js改变值的变化

    $(input).on('change',function(){ }) 当使用$(input).val('...');不会触发它的change事件 解决办法一:在改变它的值后,手动触发input的ch ...

  6. c/c++学习01

    c++指针初始赋值: //指针初始赋值 int* a = new int(3); //第二种赋值 int 初始值 = 100; int *b = &初始值; //由new分配的内存块通常使用过 ...

  7. Ubuntu16.04 anaconda3 opencv3.1.0 安装CPU版本caffe

    安装anaconda3 安装opencv3.1.0 安装依赖库 修改Makefile.config 修改Makefile 编译报错,卸载anaconda中的protobuffer: conda uni ...

  8. 【PAT甲级】1111 Online Map (30分)(dijkstra+路径记录)

    题意: 输入两个正整数N和M(N<=500,M<=N^2),分别代表点数和边数.接着输入M行每行包括一条边的两个结点(0~N-1),这条路的长度和通过这条路所需要的时间.接着输入两个整数表 ...

  9. centos 添加rpmfusion源,yum 安装 ffmpeg

    rpmfusion提供了,在Fedora和 centos 源之外的其他yum 源 例如ffmpeg 在 centos 基础源和epel-release 里面都没有, 但是可以在rpmfusion中找到 ...

  10. 每天进步一点点------SOPC的Avalon-MM IP核(一) avalon总线的信号时序

    在SOPC中自定义外设时.可以设置avalon总线的信号时序,以满足外设的要求.一般情况下,可以设为: 其中setup为read和write信号之前,address和writedata信号提前建立的时 ...