有效地将ctypes LP_c_ubyte转换为python'str'

时间:2011-08-16 18:01:35

标签: python ctypes

我遇到了ctypes绑定问题,而ctypes文档让我头疼了一点。

我有一个远程网络客户端发送二进制数据,而我正在使用的库(Mosquitto,用于MQTT消息代理)提供了一种从网络获取原始二进制数据的ctypes方法。这是“LP_c_ubyte”类型。是否有任何有效的方法可以将其转换为python'str'对象?

我需要一组常规字节用于M2Crypto的解密功能。​​

pp = ''.join(chr(msg.payload[i]) for i in xrange(msg.payloadlen)) 
clear_text = rsa.private_decrypt(pp, M2Crypto.RSA.pkcs1_padding)

这很有效,但很难看。

我可以先将客户端更改为base64编码所有内容,然后在此端更改unbase64,但这似乎也是一种解决方法。

有没有更好的方法?

1 个答案:

答案 0 :(得分:4)

我认为这应该做你想要的:

import ctypes
pp = ctypes.string_at(msg.payload, msg.payloadlen)