注册 登录
编程论坛 Python论坛

python进制转换输出报错

折翼的鸟 发布于 2019-09-22 15:10, 2284 次点击
代码如下:
a = 12345
b = "0xF98A"
c = '0b1100010110'
print(str(a)+"的二进制、八进制、十六进制分别为"+"\n"+bin(a)+"、"+oct(a)+"、"+hex(a))
s=(int(b,16))
print(b+"的二进制、十进制、八进制分别为"+"\n"+bin(b)+"、"+(s)+"、"+oct(b))

报错信息: print(b+"的二进制、十进制、八进制分别为"+"\n"+bin(b)+"、"+(s)+"、"+oct(b))
TypeError: 'str' object cannot be interpreted as an integer

大神求解!谢谢
5 回复
#2
fall_bernana2019-09-23 09:47
回复 楼主 折翼的鸟
程序代码:

>>> print(b,type(b))
0xF98A <class 'str'>
>>> print(oct(b))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object cannot be interpreted as an integer


b是str,不能把他当成数字使用oct,bin
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2019-9-23 09:52编辑过]

#3
折翼的鸟2019-09-23 16:28
回复 2楼 fall_bernana
你的意思是oct、bin函数只能用在数字上,而我的b是str,所以保错是吗
#4
wp2319572019-09-23 16:43
以下是引用折翼的鸟在2019-9-22 15:10:48的发言:

代码如下:
a = 12345
b = "0xF98A"
c = '0b1100010110'
print(str(a)+"的二进制、八进制、十六进制分别为"+"\n"+bin(a)+"、"+oct(a)+"、"+hex(a))
s=(int(b,16))
print(b+"的二进制、十进制、八进制分别为"+"\n"+bin(b)+"、"+(s)+"、"+oct(b))

报错信息: print(b+"的二进制、十进制、八进制分别为"+"\n"+bin(b)+"、"+(s)+"、"+oct(b))
TypeError: 'str' object cannot be interpreted as an integer

大神求解!谢谢

2种办法: 关键点 我用红色标出
一、
>>> b = 0xF98A
>>> hex(b)
'0xf98a'
>>> int(b)
63882

二、
>>> b = "0xF98A"
>>> hex(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object cannot be interpreted as an integer
>>> hex(eval(b))
'0xf98a'
>>>
#5
zbjzbj2019-09-23 18:29
print(b+"的二进制、十进制、八进制分别为"+"\n"+bin(s)+"、"+str(s)+"、"+oct(s))
#6
折翼的鸟2019-09-24 10:39
谢谢
1