Int zu binärer python

Diese Frage ist wahrscheinlich sehr einfach für die meisten von euch, aber ich kann die Antwort noch nicht finden.

Ich baue einen Netzwerk-Paket-Generator, der so geht:

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"), ]) 

Später rufe ich meine Klasse an und schicke das Paket so:

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

Leider, auf dem Draht habe ich \x32\x35\x37 (257 in hex ) anstatt dies zu haben: \x01\x01 .

Was ich gerne machen möchte, ist:

 send(PacketHeader(Sequencenum=257+1)) 

Und habe es richtig auf den Draht umgewandelt

Danke im Voraus !

3 Solutions collect form web for “Int zu binärer python”

Wenn du int oder einen anderen primitiven Datentyp in Binär konvertieren möchtest, dann kann dir das struct helfen.

http://docs.python.org/library/struct

 >>> import struct >>> struct.pack('>i', 257) '\x00\x00\x01\x01' >>> struct.pack('<i', 257) '\x01\x01\x00\x00' >>> struct.unpack('<i', '\x01\x01\x00\x00') (257,) >>> struct.unpack('>i', '\x00\x00\x01\x01') (257,) 

ms4py erwähnt, dass Sie möchten, um 2 Byte Ints so zu konvertieren:

 >>> struct.pack('>h', 257) '\x01\x01' >>> struct.unpack('>h', '\x01\x01') (257,) >>> 

Oh und:

 >>> struct.unpack('>h', '\x10\x00') (4096,) >>> 

Wenn du eine ganze Zahl hast und will hex:

 hex(257) '0x101' 

Anders herum

 int('0x101', 16) 257 

Scheint mir, dass du eine ganzzahlige Binärkonverter willst.

Wenn das der Fall ist, dann sollte das funktionieren:

 def convert(N): if not N: return '' else: return "%s%s" %(convert(N/2), N%2) 

Hoffe das hilft

  • Beste Weg, um eine Steckdose in Python zu öffnen
  • Python Networked Chat
  • Filteroptionen für Sniff-Funktion in der Skulptur
  • Python Multicast funktioniert nicht zwischen zwei verschiedenen Computern
  • Struct.error: Argument für 's' muss ein Bytes-Objekt in python sein 3.4
  • Überprüfen der Netzwerkverbindung
  • Schwierigkeiten mit Pythons Socket.gethostbyaddr ()
  • Wie man die nächste IPv6-Netzwerkadresse aus der aktuellen Netzwerkadresse inkrementiert und bekommt
  • Ist diese Methode der Dateisperren akzeptabel?
  • Portweiterleitung in Python, um Steckdosenverbindungen zu ermöglichen
  • Wie bekomme ich die nächste Netzwerkadresse bei der Startnetzwerkadresse in Python
  • Python ist die beste Programmiersprache der Welt.