python3 returns 对列表中的元素进行位移时不支持的操作数?
python3 returns unsupported operand when bit shifting an element in a list?
我有一个十六进制值列表,我需要将每个元素移动 9,并将结果与另一个列表组合。我在下面提供了一个我尝试过的例子。
x = [hex(10), hex(11)]
y = x[0] << 1
这会导致错误:
TypeError: unsupported operand type(s) for <<: 'str' and 'int'
虽然下面的代码可以按我喜欢的方式工作,但是 returns 一个 int
x = [0xa, 0xb]
y = x[0] << 1
我的问题是如何让第一个代码示例运行?
我知道列表返回的是字符串而不是整数。我试图将 str 类型强制转换为十六进制类型,但这导致了错误。然后我尝试从字符串类型转换为 int 到 hex,并收到 str 到 int 类型转换的错误。
我需要将结果存储为列表中的十六进制,因此将列表更改为整数对我来说不起作用。
您可以使用
将十六进制字符串转换为整数
int(hex(10), base=16)
但那只会 return 10.
如果你有一个整数列表,我会先将它们移动你需要移动的数量,然后使用 hex
将它们转换为十六进制字符串。十六进制的值和它的整数是相同的,例如0xa == 10
是 True
。但是 hex(10)
return 是一个字符串。
所以
nums = [10, 11, ...]
nums = [x << 9 for x in nums]
hex_nums = map(hex, nums)
或类似的东西。
最好的方法是使用基数为 16 的构造函数 'int' 将十六进制值转换为整数,然后使用按位运算符
a=hex(10)
b=hex(11)
x = [int(a,16),int(b,16)]
y = x[0] << 1
print(x)
print(y)
我有一个十六进制值列表,我需要将每个元素移动 9,并将结果与另一个列表组合。我在下面提供了一个我尝试过的例子。
x = [hex(10), hex(11)]
y = x[0] << 1
这会导致错误:
TypeError: unsupported operand type(s) for <<: 'str' and 'int'
虽然下面的代码可以按我喜欢的方式工作,但是 returns 一个 int
x = [0xa, 0xb]
y = x[0] << 1
我的问题是如何让第一个代码示例运行?
我知道列表返回的是字符串而不是整数。我试图将 str 类型强制转换为十六进制类型,但这导致了错误。然后我尝试从字符串类型转换为 int 到 hex,并收到 str 到 int 类型转换的错误。
我需要将结果存储为列表中的十六进制,因此将列表更改为整数对我来说不起作用。
您可以使用
将十六进制字符串转换为整数 int(hex(10), base=16)
但那只会 return 10.
如果你有一个整数列表,我会先将它们移动你需要移动的数量,然后使用 hex
将它们转换为十六进制字符串。十六进制的值和它的整数是相同的,例如0xa == 10
是 True
。但是 hex(10)
return 是一个字符串。
所以
nums = [10, 11, ...]
nums = [x << 9 for x in nums]
hex_nums = map(hex, nums)
或类似的东西。
最好的方法是使用基数为 16 的构造函数 'int' 将十六进制值转换为整数,然后使用按位运算符
a=hex(10)
b=hex(11)
x = [int(a,16),int(b,16)]
y = x[0] << 1
print(x)
print(y)