我使用tcp向python服务器发送数据。数据如下:
struct protocol
{
unsigned char prot;
int id;
char name[32];
}
看看name
字段,它是一个以空结尾的字符串,最大大小为32。现在我使用strcpy
。
protocol p;
memset(&p, 0, sizeof(p));
strcpy(name, "abc");
现在我用python解压它。
prot,id,name = struct.unpack("@Bi32s")
现在len(name)
是32。但是当长度是3时,我需要得到"abc"
的字符串。
我该怎么做?
打开包装后,您可以执行以下操作:
或者,您可以使用
ctypes
模块:解包后用空字符(
'\0'
)对其进行分区:替代使用^{} :
只需将子串放到第一个
\0
:它有一个特殊性,即如果字符串中没有出现
\0
,它将检查并失败(抛出ValueError
)。相关问题 更多 >
编程相关推荐