Python 2.5版本的array.array.tostring()?

时间:2011-06-15 19:05:37

标签: python arrays google-app-engine bytearray gdata

我使用gdata python模块中的一些Crypto模块在GAE上使用2.5。我能够在字符串上使用hashAndSign,但该函数返回一个'B'无符号字符的array.array。

我还在尝试将它们整合在一起,但我现在磕磕绊绊的一件事就是:

array('B', [120, 231, 49, 2, 125, 143, 213, 14, 214, 66, 52, 11, 124, 154, 99, 179])

是一个字符串表示形式,如:

'x\xe71\x02}\x8f\xd5\x0e\xd6B4\x0b|\x9ac\xb3'

如何让数组成为这样的字符串?

我知道这是一件很简单的事情,但它让我很难过。

我需要这个,所以我可以做.encode('base64')发送到我的客户端应用程序,希望能够用它来验证我签名的字符串。

3 个答案:

答案 0 :(得分:2)

如果由于某种原因,.tostring()方法不可用 - 这让我觉得这个数组与通常的array.array不同,因为.tostring()至少可以追溯到{{ 3}} - 然后

>>> import array
>>> q = array.array('B', [120, 231, 49, 2, 125, 143, 213, 14, 214, 66, 52, 11, 124, 154, 99, 179])
>>> ''.join(chr(c) for c in q)
'x\xe71\x02}\x8f\xd5\x0e\xd6B4\x0b|\x9ac\xb3'

应该有用。

答案 1 :(得分:0)

或只是array.tostring方法:

>>> a = array.array('B', [120, 231, 49, 2, 125, 143, 213, 14, 214, 66, 52, 11, 1
24, 154, 99, 179])
>>> a.tostring()
'x\xe71\x02}\x8f\xd5\x0e\xd6B4\x0b|\x9ac\xb3'

答案 2 :(得分:0)

你的问题标题“array 2.5的array.array.tostring()?”令人费解。 tostring()对象的array.array方法已经存在了很长时间:

Python 1.5.2 (#0, Apr 13 1999, 10:51:12) [MSC 32 bit (Intel)] on win32
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> import array
>>> q = array.array('B', [120, 231, 49, 2, 125, 143, 213, 14, 214, 66, 52, 11, 124, 154, 99, 179])
>>> q.tostring()
'x\3471\002}\217\325\016\326B4\013|\232c\263'
>>>

旁白:是的,这是对的,曾几何时,repr()做了八进制,而不是十六进制。

你在Python 2.5中实际尝试了什么?结果是什么?将完整堆栈跟踪和错误消息复制/粘贴到您的问题编辑中。