2011-06-15 75 views
2

我在GAE上使用2.5來自gdata python模塊的一些加密模塊。我能夠在字符串上使用hashAndSign,但該函數返回'B'無符號字符的array.array。array.array.tostring()的Python 2.5版本?

我仍然得到它一起進行實驗,但有一件事現在我絆上得到一個:

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')發送到我的客戶端應用程序,希望能夠用它來驗證我簽署的字符串。

+1

請格式化您的代碼,謝謝! – Trufa 2011-06-15 19:09:46

回答

0

你的問題標題令人費解。 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中嘗試了些什麼?結果是什麼?將完整的堆棧跟蹤和錯誤消息複製/粘貼到您的問題的編輯中。

+0

男人我們的答案有什麼區別?那麼你爲什麼像我一樣回答? – tony 2011-06-16 04:54:54

+0

@scr:人是你的差異程序破?兩件事情:(1)你回答,好像OP沒有提到tostring()(2)我試圖讓他提供代碼和堆棧跟蹤,以便我們可以幫助他解決他的問題。那麼你爲什麼回答@ DSM答案的一個子集。 – 2011-06-16 08:36:25

+0

我想我提出的決定比@ DSM更合理。好,那麼你的答案比我的答案更好?無論如何,沒關係,讓它成爲,我不介意。 – tony 2011-06-16 08:50:34

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

或者只是array.tostring方法: 「Python 2.5的版本array.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'