2015-11-07 61 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