cpython python 区别面试_python面试题

本文介绍了Python中不同进制之间的转换方法,包括二进制、八进制、十进制和十六进制的相互转换。此外,还详细讲解了如何将IP地址转换为整数以及将整数还原为IP地址的函数实现。最后,讨论了Python的递归限制和ASCII、Unicode、UTF-8、GBK编码的区别。
摘要由CSDN通过智能技术生成

1、通过代码实现如下转换(进制之间转换)

# 二进制转换成十进制-->int

v = "0b1111011"

b = int(v,2)

print(b) # 123

# 十进制转换成二进制--->bin

v2 = 18

print(bin(int(v2)))

# 0b10010

# 八进制转换成十进制

v3 = "011"

print(int(v3))

# 11

# 十进制转换成八进制:---> oct

v4 = 30

print(oct(int(v4)))

# 0o36

# 十六进制转换成十进制:

v5 = "0x12"

print(int(v5,16))

# 18

# 十进制转换成十六进制:---> hex

v6 = 87

print(hex(int(v6)))

# 0x57

2、请编写一个函数实现将IP地址转换成一个整数

请编写一个函数实现将IP地址转换成一个整数。

如 10.3.9.12 转换规则为:

00001010

00000011

00001001

00001100

再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?

answer

ip_addr = '192.168.2.10'

# transfer ip to int

def ip2long(ip):

ip_list = ip.split('.')

result = 0

for i in range(4): # 0,1,2,3

result = result + int(ip_list[i]) * 256 ** (3 - i)

return result

long = 3232236042

transfer int to ip

def long2ip(long):

floor_list = []

yushu = long

for i in reversed(range(4)): # 3,2,1,0

res = divmod(yushu, 256 ** i)

floor_list.append(str(res[0]))

yushu = res[1]

return '.'.join(floor_list)

a = long2ip(long)

print(a)

3、python递归的最大层数?

Python的最大递归层数是可以设置的,默认的在window上的最大递归层数是998;

可以通过sys.setrecursionlimit()进行设置,但是一般默认不会超过3925-3929这个范围

4、ascii、unicode、utf-8、gbk 区别?

#Ascii: 1个字节 支持英文

#unicode :所有字符(无论中文、英文等)1个字符:4个字节

#gbk : 1个字符,英文1个字节,中文2个字节。

#utf-8 :英文1个字节,欧洲字符:2个字节, 亚洲: 3个字节。

5、字节码和机器码的区别?

- C代码被编译成机器码(二进制),在机器上直接执行。

- Cpython编译你的python源代码,生成字节码。

- 机器码快的多,字节码更易迁移,也安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值