如何在python中将unsigned char类型的int字符串转换为int
Posted
技术标签:
【中文标题】如何在python中将unsigned char类型的int字符串转换为int【英文标题】:How to convert string of ints of type unsigned char to an int in python 【发布时间】:2014-02-25 13:50:13 【问题描述】:我有一个从 C++ 客户端连接到 python 服务器的套接字连接。客户端在消息中放置了一个 Diffie-Hellman 密钥,但是当我查看它时,由于在客户端是未签名的字符,所以它是乱码。
我已经能够使用 repr(key) 进行原始转储,并得到以下结果:
\'V\x99\xf3\x0c\x1b\xc7]\x1f\xe4\nQ5$*\x88\x88Yg\xff\xea\xe9e\xd8\xb32oD\xff
\xcfV\x84\x90xv,\x9dw\x1e(\x12\xfe\x9a\xb4,\x96%\xad;S\xb6\xa3\xf9\xb69\xfa\xec
\x1dl\x97\x1d\xd64/'
密钥长度应为 64。如何将此字符串转换为 64 个整数,即实际密钥?
【问题讨论】:
【参考方案1】:你可以使用漂亮的struct
module 来解压它。这将为您提供 64 个小整数的元组(B
表示“无符号字符”):
>>> print repr(data)
'V\x99\xf3\x0c\x1b\xc7]\x1f\xe4\nQ5$*\x88\x88Yg\xff\xea\xe9e\xd8\xb32oD\xff\xcfV\x84\x90xv,\x9dw\x1e(\x12\xfe\x9a\xb4,\x96%\xad
;S\xb6\xa3\xf9\xb69\xfa\xec\x1dl\x97\x1d\xd64/'
>>> len(data)
64
>>> struct.unpack("64B", data)
(86, 153, 243, 12, 27, 199, 93, 31, 228, 10, 81, 53, 36, 42, 136, 136, 89, 103, 255, 123, 234, 233, 101, 216, 179, 50, 111, 68,
255, 207, 86, 132, 144, 120, 118, 44, 157, 119, 30, 40, 18, 254, 154, 180, 44, 150, 37, 173, 59, 83, 182, 163, 249, 182, 57, 250
, 236, 29, 108, 151, 29, 214, 52, 47)
【讨论】:
谢谢!在 python 中使用二进制数据进行谷歌搜索时,不知何故找不到 struct 包。以上是关于如何在python中将unsigned char类型的int字符串转换为int的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C 中将 short 转换为 unsigned char *buf?
在 C++ 中将 unsigned char (byte) 数组转换为 unsigned short
如何使用 Swig 将 unsigned char* 转换为 Python 列表?