将16位值拆分为12+4 python stru

2024-04-26 12:02:44 发布

您现在位置:Python中文网/ 问答频道 /正文

此问题与此帖子相关: int to binary python

我有这个序列号我需要增加,现在它是固定的,工作正常。 但是,我刚刚发现序列号并不是简单的短序列号,考虑一下这个方案:

     12 bits           4 bits
 Sequence number   Fragment number

所以如果我发送一个258(\x02\x01)的序列号,它实际上是

^{pr2}$

我想知道怎样才能把258作为实际的序列号,而不是这样分开。 有没有什么简单的方法可以用struct来实现这一点?在

更新:

我在上述问题中的意思是:

我正在构建一个网络数据包生成器,它是这样的:

class PacketHeader(Packet):
fields = OrderedDict([
    ("head", "\x00"),
    ("headpad", "\x00"),
    ("headlen", "\x1a\x00" ),
    ("presentflag", "\x2e"),
    ("timestamp", "\x43\x10\x58\x16\xa1\x01\x00\x00"),
    ("flag", "\x03"),
    ("Sequencenum", "\x04\x00"), 
###12 bits of this 'short' is Seq num, 4 bits left are if this is a fragment or not(if it is, its value will be =>1, and will then represent the frag number.)

])

后来,我打电话给班里的同学,把包裹发过来:

send(PacketHeader(Sequencenum=257))
send(PacketHeader(Sequencenum=258))
send(PacketHeader(Sequencenum=259))

我需要将序列号(在本例中假设为257)转换为一个短序列号,并处理表示16位短序列中片段号的4位。我希望始终将fragment number设置为0,但要使Sequencenum正确递增。在

提前谢谢!在


Tags: sendnumberifisthiswill帖子bits