gpt4 book ai didi

Python 2.7 变量类型保持为 int32 而不是转换为 long

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:50 25 4
gpt4 key购买 nike

我正在尝试将 bool 值列表解码为数字通过for循环中的按位移位操作。这是我的代码的一个简化示例:

import numpy as np
k = 0
m = np.full((1, 32), True, dtype=bool) # example list
n = m[0]
for i in n:
k = k << 1 | i

print (k)

但是,k 返回为 -1 而不是 4294967295。在调试器中运行它显示 kint32 类型。有没有强制 k 改为 long 类型?或者是否有另一种方法来解码我的 bool 值列表。该代码最多应处理 128 位。我想知道这是否只发生在 for 循环中,因为在循环外移动超过 32 位似乎工作正常。

使用 k = 0L 为我的示例代码提供了正确的值,但它只会将类型更改为 int64,并且不适用于长度超过 64 位的 bool 列表。

最佳答案

经过一些调整后,我的代码按我想要的方式工作。事实证明,我所要做的就是将按位运算转换为long 类型。问题似乎是按位运算符不断返回 int32int64 类型。这仅适用于 Python 2.7

import numpy as np
k = 0
m = np.full((1, 129), True, dtype=bool) # example list
n = m[0]
for i in n:
k = long((k << 1 )| i)

print (k) # should give '680564733841876926926749214863536422911'

关于Python 2.7 变量类型保持为 int32 而不是转换为 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51967075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com