python - 如何在python中将unsigned char类型的int字符串转换为int

标签 python c++ c sockets

我有一个从 C++ 客户端连接到 python 服务器的套接字连接。客户端在消息中放置了 Diffie-Hellman key ,但当我查看它时,由于客户端上有未签名的字符,它是乱码。

我已经能够使用 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/'

key 长度应为 64。如何将此字符串转换为实际 key 的 64 个整数?

最佳答案

您可以使用漂亮的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 - 如何在python中将unsigned char类型的int字符串转换为int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22016146/

相关文章:

c - 将地址写入指针

C: 2D-Array 没有从一开始就打印出来

python - lxml 返回 DTD 属性的空列表

python - 清理 python 切片?

python - 将值映射到 seaborn 热图中的特定颜色

C++ select 停止接受连接

python - 将line_profiler与numba jitted函数配合使用

C++ 聚合关系创建

c++ - Visual Studio 2008 C++ 无 x64 平台

c - c中的qsort不对我的结构数组进行排序