1
我想知道是否有一种方法可以像使用Python中的C/C++一样使用标准库(最好是在一个bitarray上)进行二进制补码的扩展。两个补码符号扩展python?
C/C++:
// Example program
#include <iostream>
#include <string>
int main()
{
int x = 0xFF;
x <<= (32 - 8);
x >>= (32 - 8);
std::cout << x;
return 0;
}
下面是一个Python函数我写这(在我的测试)完成同样的事情。我只是想知道是否有一个内置的(或只是更快)做它的方式:
def sign_extend(value, bits):
highest_bit_mask = 1 << (bits - 1)
remainder = 0
for i in xrange(bits - 1):
remainder = (remainder << 1) + 1
if value & highest_bit_mask == highest_bit_mask:
value = (value & remainder) - highest_bit_mask
else:
value = value & remainder
return value
http://stackoverflow.com/q/1604464/2823755 – wwii
啊,没有看到,因为某些原因。感谢您指出了这一点。 – Vasu
虽然是为了字符串转换。 – wwii