【问题标题】:Error TypeError: unsupported operand type(s) for -: 'str' and 'str'错误类型错误:不支持的操作数类型 -: 'str' 和 'str'
【发布时间】:2017-05-27 02:04:18
【问题描述】:

我的编码有一些错误

ki = raw_input("Enter Initial Key in HEX 20 bit :") 
IV = raw_input("Enter Initial vector in HEX 16 bit :")

for i in xrange(0,20,2):
if(ki[i]>='0' and ki[i]<='9'):
    ie=ki[i]-'0'
elif (ki[i]>='a' and ki[i]<='f'):
    ie=ki[i]-'a'+10
elif (ki[i]>='A' and ki[i]<='F'):
    ie=ki[i]-'A'+10

这个错误

Traceback(最近一次调用最后一次):文件 “C:/Users/MrX/PycharmProjects/grain/grain.py”,第 16 行,在 即=ki[i]-'0'; TypeError: 不支持的操作数类型 -: 'str' 和 'str'

我希望你能帮我解决它。谢谢

【问题讨论】:

  • 你的代码应该做什么?
  • 即使里面有数字,也不能从字符串中减去字符串。

标签: python


【解决方案1】:

您正在对字符串调用 - 操作数:

ie = ki[i] - 'a' + 10

我猜你认为 Python 中的简单引号是指字符的 ASCII 值。但是,在 Python 中,单引号和双引号是严格等价的,它们都表示字符串。

你想要的是ord函数:

>>> ord('a')
97

【讨论】:

    猜你喜欢
    • 2021-06-18
    • 2014-06-15
    • 2019-04-08
    • 2018-07-07
    • 2014-06-16
    • 2014-03-17
    • 2016-01-26
    • 2018-08-28
    • 1970-01-01
    相关资源
    最近更新 更多