Python中进制转换及int()函数

您所在的位置:网站首页 python中int运算 Python中进制转换及int()函数

Python中进制转换及int()函数

2023-09-13 23:12| 来源: 网络整理| 查看: 265

Python2 中的字符编码:

Python的代码(指的是你写的程序的那些字符)中的字符默认编码是ASCII的,也就是说,默认情况下你只能输入ASCII的那些字符,如果输入其它不再ASCII中的字符,你写的代码就无法被正确的识别。

所以如果你想要输入非ASCII字符,就需要进行字符编码的声明(具体的做法网上有很多,这里就不说了),不过有很多的IDE会帮你做这件事,所以有时即使你不进行编码声明,输入中文也并不会报错,但其实这并不是Python的支持。

Python中的进制转换

首先需要明确一个概念,即所谓的16进制,10进制,2进制,只是一种整型数值的表示方法表示方法,同一个数值可以有的16进制,10进制,2进制的表示,也可以使用16进制,10进制,2进制来创建同一个数值。并且一般在一定范围内,不同方式表示的同一个数字在内存中的存储结构也是相同的。

所以所谓的16进制转10进制,10进制转2进制,并不是对一个整型类的数值而讲的,整形类数值根本就没有进制转换的概念,原因就如同上一段中所描述的。

进制转换又是指的什么

这就需要了解另一种概念,即使用字符串表示的数值可以称它为字符型数值,这是一种数值的表示方法,其本质上是一些由数字和若干字幕所组成的用来表示一个数值的字符串,所谓的进制转换,都要围绕着它来进行。

进制转换都可以分为: 1、整型转换为字符字符型数值

bin()\ oct()\ hex()\str() (10进制,以及使用专有表示法定义的2/8/16进制整型)

2进制、8进制、10进制、16进制、的整型数值转字符型数值函数

2、字符型数值转换为整型

int() 

3、字符型数值互转

转换,可以参照下面的进制转换表\

进制转换表:

↓2进制8进制10进制16进制2进制-bin(int(x, 8))bin(int(x, 10))bin(int(x, 16))8进制oct(int(x, 2))-oct(int(x, 10))oct(int(x, 16))10进制str(int(x, 2))str(int(x, 8))-str(int(x, 16))16进制hex(int(x, 2))hex(int(x, 8))hex(int(x, 10))-

PS1:可以看到不同的进制转换,都是以整型数值作为桥梁,而进行的不同的进制的字符型数值的转换,int()函数可以将一个字符型数值转换为整型数值,就像上面所说的,整型数值类型并没有进制转换的概念,所以如果需要将这个整型数值以其它进制字符型数值进行转,就还需要调用对应的整型转换为字符型数值的函数。而Python默认使用的就是10进制,所以如果要把整型数值转换为10进制的字符型数值,实际上是什么都不需要的,直接print即可

你所不知道的int()函数

实际上int()函数不止可以将字符型数值转换为2/8/10/16进制,它还可以将2-36(除了1) 进制的字符型数值转换为整型数值

int函数的说明如下:

int([number | string[, base]])

Convert a number or string to an integer. If no arguments are given, return 0. If a number is given, return number.__int__(). Conversion of floating point numbers to integers truncates towards zero. A string must be a base-radix integer literal optionally preceded by ‘+’ or ‘-‘ (with no space in between) and optionally surrounded by whitespace. A base-n literal consists of the digits 0 to n-1, with ‘a’ to ‘z’ (or ‘A’ to ‘Z’) having values 10 to 35. The default base is 10. The allowed values are 0 and 2-36. Base-2, -8, and -16 literals can be optionally prefixed with 0b/0B, 0o/0O, or 0x/0X, as with integer literals in code. Base 0 means to interpret exactly as a code literal, so that the actual base is 2, 8, 10, or 16, and so that int('010', 0) is not legal, while int('010') is, as well as int('010', 8).

的说明如下,意译的翻译一下

将一个数字或字符串转化为整型,如果没有给参数返回0,若果参数为数字,自返回数字的构造。浮点型数值将会被截断转为整型,

string参数必须为base-radix类型字符串,可以以“+”或“-”开头,但与数字点不能有空格,但是整体的首尾可以有空格,n进制使用0至n-1表示,大于9的数字用a-z(或A-Z)表示10-35,其中2/8/16进制可以0b/0o/0x开头,不区分大小写

base参数默认为10,接受0-36但不包括1,0进制会按照字面意思进行转换。......

int有趣的地方就是可以进行0-36(不包括1)的进制转换如:

>>> int("11",9) 10 >>> int("13",7) 10 >>> int("a",17) 10

0进制会自动判断你是2/8/10/16进制,如果不是这几个会报错

>>> int("111",0) 111 >>> int("0b111",0) 7 >>> int("0o111",0) 73 >>> int("0x111",0) 273 >>> int("0xff",0) 255 >>> int("0xgg",0) # 17进制 Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 0: '0xgg' 举例 1、整型转换为字符字符型数值

将数值16转换为2/8/10/16进制的字符串数值

>>> bin(16) '0b10000' >>> oct(16) '020' >>> str(16) '16' >>> hex(16) '0x10'

2进制、8进制、10进制、16进制、的整型数值转字符型数值函数

2、字符型数值转换为整型

将2/8/10/16进制的字符串转换为数值16

>>> int("0b10000",2) 16 >>> int("0o020",8) 16 >>> int("16",10) 16 >>> int("0x10",16) 16 3、字符型数值互转 >>> bin(int("16")) # 10进制字符型数值转2进制字符型数值 '0b10000' >>> oct(int("10",16)) # 16进制字符型数值转8进制字符型数值 '020' >>> bin(int("020",8)) # 8进制字符型数值转2进制字符型数值 '0b10000'



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3