这个问题与这篇文章有关: int to binary python
我有这个需要增加的序列号,现在它已经修复并且工作正常。但是,我刚刚发现实际上序列号不仅仅是一个简短的,考虑这个方案:
12 bits 4 bits
Sequence number Fragment number
所以如果我发送一个值为 258 (\x02\x01) 的序列号,它实际上是;
Fragment number :2
Sequence number :16
我想知道如何将 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 位。我希望始终将片段编号设置为 0,但将 Sequencenum 正确递增。
提前致谢 !