【发布时间】:2012-02-28 21:16:53
【问题描述】:
我需要这个 Perl 字符串的 Python 模拟:
unpack("nNccH*", string_val)
我需要nNccH* - Python 格式字符的数据格式。
在 Perl 中,它将二进制数据解压缩为五个变量:
- “网络”中的 16 位值(大端)
- “网络”中的 32 位值(大端)
- 有符号字符(8 位整数)值
- 有符号字符(8 位整数)值
- 十六进制字符串,高半字节在前
但我在 Python 中做不到
更多:
bstring = ''
while DataByte = client[0].recv(1):
bstring += DataByte
print len(bstring)
if len(bstring):
a, b, c, d, e = unpack("nNccH*", bstring)
我从来没有用 Perl 或 Python 写过,但我目前的任务是编写一个用 Perl 写的多线程 Python 服务器...
【问题讨论】:
-
我可以找到除 H* 之外的所有内容的等价物,我假设您会使用 p 或 s。
-
您需要计算字符串大小,这个答案可能会有所帮助。 stackoverflow.com/a/5849224/70350
-
"while DataByte = client[0].recv(1):"不是 Python。这永远行不通。 -
@SenthilKumaran: AFAIR
*的意思是“尽可能多的元素”,所以他可以解压H*之前的所有内容,然后直接抓取其余部分而不需要解压 -
顺便说一句,D 先生,感谢您编辑和澄清问题。 S.Lott 注意到,最后一个代码 sn-p 没有什么意义