Python 2.5中的array.array.tostring()?

2 投票
3 回答
1612 浏览
提问于 2025-04-16 19:38

我在使用GAE的2.5版本,并且用到了一些来自gdata Python模块的加密模块。我可以对一个字符串使用hashAndSign这个功能,但它返回的是一个包含无符号字符的数组。

我还在尝试把这些东西整合在一起,但现在我遇到的问题是想把这个:

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'

我该怎么把这个数组转换成这样的字符串呢?

我知道这应该是个简单的事情,但我就是搞不定。

我需要这样做,是为了能进行.base64编码,这样我就可以发送给我的客户端应用,希望它能用来验证我签名的字符串。

3 个回答

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

如果因为某种原因,.tostring() 方法不可用——这让我觉得这个数组和我们通常用的 array.array 不太一样,因为 .tostring() 方法至少在 python 2.4 版本时就已经存在了——那么

>>> 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'

应该可以正常使用。

0

你的问题标题“Python 2.5版本的array.array.tostring()?”让人有点困惑。其实,array.array对象的tostring()方法已经存在很久了:

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中到底尝试了什么?结果是什么?请把完整的错误信息和堆栈跟踪复制粘贴到你问题的编辑里。

撰写回答