如何从python的s字符串中删除前4个字节

mko

我得到了一个特殊的字符串格式数据包,它具有32个字节的标头,主体包含一个或多个条目之一,每个条目由90个字节组成。

我想使用python处理此字符串。我可以像sock一样读取前32个字节的报头,然后将其从字符串中删除,然后继续读取第一个条目的90个字节吗?

就像是:

str.read(32) # => "x01x02..."
str.read(90) # => "x02x05..."
彼得·吉布森

您可以使用StringIO读取类似文件的字符串

>>> import StringIO
>>> s = 'Hello, World!'
>>> sio = StringIO.StringIO(s)
>>> sio.read(6)
'Hello,'
>>> sio.read()
' World!'

我还建议您看看struct模块,以获取有关解析二进制数据的帮助

>>> from struct import *
>>> pack('hhl', 1, 2, 3)
'\x00\x01\x00\x02\x00\x00\x00\x03'
>>> unpack('hhl', '\x00\x01\x00\x02\x00\x00\x00\x03')
(1, 2, 3)

您使用格式字符串定义数据的格式,因此'hhl'在上面的示例中为short (2 bytes), short (2 bytes), int (4 bytes)它还支持在格式字符串中指定字节序(字节顺序)。

例如,如果标题格式为uint, 4 byte str, uint, uint, ushort, ulong

>>> import struct
>>> data = ''.join(chr(i) for i in range(128)) * 10
>>> hdr_fmt = 'I4sIIHL'
>>> struct.calcsize(hdr_fmt)
32
>>> struct.unpack_from(hdr_fmt, data, 0)
(50462976, '\x04\x05\x06\x07', 185207048, 252579084, 4368, 2242261671028070680)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

NASM程序集,如何打印字符串数组的前4个字节

如何从base64解码的字符串中获取前16个字节的数据

从字符串中删除前4个字符

如何从字符串中删除前四个字符?宏

在 R 中的某个字符串模式后删除前 4 个单词?

如何从字符串中删除最后4个字符?

Python:如何找到与字符串中前三个字符匹配的目录?

如何在Python中获取字符串的前2个字母?

删除两列的前4个字符之间包含重复字符串的行

使用PHP删除字符串的前4个字符

删除字符串的前3个字符

s在Java中占用3个字节吗?时间:字符串s =“ abc”; 爪哇

Swift 4中textField中前4个字符的子字符串

从 Bash 中的字符串中捕获前 4 个和最后 4 个字符?

从字符串中删除前六个字符(快速)

删除字符串向量中前2个字符的重复项

从字符串中删除前三个字符

删除字符串中前十个字符的所有内容

如何在Swift 4中删除字符串的最后一个字符?

从字符串中删除前x个字符?

从字符串中删除前x个字符?

如何从c中的字符串中删除前n个字符?

套接字连接中的python字符串大小被高估了37个字节

如何从多行字符串的每一行中删除前 40 个字符?

如何从此字符串中删除前 5 个字符?

一个Regex如何只匹配Python中字符串的前几个字符?

修剪列表中字符串的前4个字符

匹配字符串中的前 4 个字符

如何从IronPyhon中的字符串中删除最后一个字符?