2015-11-07 58 views
0

我試圖將C客戶端連接到Python服務器。 C客戶端發送一個字符串的長度,然後逐個發送字符串的字符,但是以字節爲單位。Python的struct.unpack從4字節到字符

這是我送的人物:

for (i = 0; i<length; i++) { 
     ascii = (int)word[i]; --- word is a char [] 
     ascii = htonl(ascii); 
     send(c, &ascii, sizeof(ascii), 0); 
    } 

在Python端,我用的recv和解壓。我想我得到4個字節,但我不知道如何將它們轉換爲解壓縮字符。

for i in range (0,nr): 
      el = c_socket.recv(4) -- this returns values like b'\x00\x00\x00a' 
      el = struct.unpack("!i",el)[0].decode('ascii') --- this doesn't work 

So how do I do that? 
+0

你爲什麼要發送的字符作爲整數 - 翻兩番的數據涉及的金額 - 當你可以只直接發送字符,因爲它們是字節? – jwodder

+0

我需要C客戶端與C服務器一起工作,這是我可以使其工作的唯一方式,但現在我無法使C和Python一起工作。那麼是否有任何方法來「解碼」字節? – Mocktheduck

+0

好吧,所以它的作品,如果我只是使用el.decode('ascii') – Mocktheduck

回答

0

struct.unpack("!i",el)返回包含整數的一個元素的元組。這個整數的字符轉換在該碼點,使用chr

el = chr(struct.unpack("!i",el)[0]) 
+0

謝謝。這也適用! – Mocktheduck