2014-02-25 66 views
0

我有一個來自連接到python服務器的C++客戶端的套接字連接。客戶端在消息中放置了一個Diffie-Hellman密鑰,但是當我查看它時,由於在客戶端沒有簽名字符,它變得非常糟糕。如何將int類型的unsigned char字符串轉換爲python中的int

我已經能夠做到用再版(鍵)原始轉儲,並得到了以下內容:

\'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) 
+0

謝謝!在Python中使用二進制數據搜索時,以某種方式沒有找到結構包。 – czobrisky

+0

不客氣。 /我擁抱'struct',這真棒。 – unwind