【问题标题】:Python 2.5 version of array.array.tostring()?array.array.tostring() 的 Python 2.5 版本?
【发布时间】:2011-09-15 19:34:19
【问题描述】:

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

我仍在尝试将它们整合在一起,但我现在遇到的一件事是:

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') 发送到我的客户端应用程序,希望能够使用它来验证我签名的字符串。

【问题讨论】:

  • 请正确格式化您的代码,谢谢!

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


【解决方案1】:

如果由于某种原因 .tostring() 方法不可用 - 这让我认为这个数组与通常的 array.array 不同,因为 .tostring() 至少早在 @987654321 @——那么

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

应该可以。

【讨论】:

    【解决方案2】:

    或者只是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'
    

    【讨论】:

      【解决方案3】:

      您的问题标题“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 中实际尝试了什么?结果是什么?将完整的堆栈跟踪和错误消息复制/粘贴到您的问题的编辑中。

      【讨论】:

      • 哥们我们的答案有什么区别?那你为什么像我一样回答呢?
      • @scr: 你的 diff 程序坏了吗?两件事:(1)你回答好像OP没有提到tostring()(2)我试图让他提供代码和堆栈跟踪,以便我们可以帮助他解决他的问题。那么,您为什么要作为@DSM 答案的一个子集来回答。
      • 我猜我提出的决定比@DSM 的更合理。好的,那么你的答案比我的更好吗?反正好吧,就这样吧,我不介意。
      • 昨晚一定是键盘后面的螺母松了!我不知道我是如何设法不能只使用 .tostring() 的,但它当然工作得很好。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2017-11-03
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      相关资源
      最近更新 更多