2009-04-28 28 views

Antwort

1

mit .Net:

byte[] buffer = System.BitConverter.GetBytes(string.Length) 
print System.BitConverter.ToString(buffer) 

Das wird geben die Bytes als Hex. Möglicherweise müssen Sie die Syntax für IronPython bereinigen.

+0

+1 danke. Ich wünschte, ich wüsste, was die reine Python-Syntax wäre ... aber ich laufe immer wieder in die Dokumentation von Python 3. – BuddyJoe

3

Verwenden Sie struct.

import struct 

print struct.pack('L', len("some string")) # int to a (long) byte array 
+0

+1. Sorry Follow-up-Frage, dann ist der lange Datentyp unbegrenzt. http://docs.python.org/library/stdtypes.html Ich brauche den Wert (Länge) in 6 Bytes gespeichert werden. Was ist der beste Weg, dies zu erklären? Ich muss die Bytes auf kleinere Zahlen auffüllen. – BuddyJoe

+0

Die vom Strukturmodul verwendeten Datentypen sind nicht dieselben wie in Python. In diesem Fall ist 'lang' 4 Bytes. 6 Bytes ist eine seltsame Länge für eine ganze Zahl, aber Sie könnten es mit etwas wie struct.pack (' rmmh

+0

Wäre es nicht besser, etwas wie [ord (x) für x in struct.pack ('L', )]? Wenn ich dies benutze, um die aktuelle Epoche zu konvertieren, bekomme ich eine Zeichenkette wie 'e0 \ xf1U', mit ord I bekomme ich [100, 48, 241, 85], was viel brauchbarer aussieht. – parvus