64位符号字符串(十六进制)到32位符号字符串

时间:2015-12-03 17:46:50

标签: python string 64-bit 32-bit

我正在尝试将64位符号字符串转换为32位。我的顾问说,64位符号字符串是一个十六进制字符串,我应该只在第8位后删除所有位。我决定用Python掩盖它:

that_string & 0xFFFFFFFF

但是如果不将字符串转换为int(),就不可能做到:

int('0x'+that_string, 16) & 0xFFFFFFFF

但是'that_string'变成了一个真正的整数,我无法将她转换回字符串。它不可能使chr(int('0x'+ that_string,16)& 0xFFFFFFFF),它导致问题:

ValueError: chr() arg not in range(256)

由于另一个错误:

,也无法进行decode()
bash ~$: (that_string).decode('hex')
...  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/encodings/hex_codec.py", line 42, in hex_decode
    output = binascii.a2b_hex(input)
TypeError: Odd-length string

我试图寻找另一个机会,但没有得到任何合适的解决方案。

而且,是的,我尝试了base64 - 库,但是我的顾问说,这是什么错误的想法以及那不是解决方案。

我很尴尬。请问你能帮帮我吗?可能是,还有其他方法存在,不是吗?

1 个答案:

答案 0 :(得分:0)

用切片取最右边的8位数字:

document.cookie = "name=value; expires=some GMT date string";

其中str[-8:] 是一个包含输入数据十六进制表示的字符串。

如果str的数字少于8位,那么这个表达式将返回它们,这就是你想要的。

例如:

str