2017-01-31 3 views
0

Ich versuche, einen Zeitstempel an den Anfang eines Byte-Objekts hinzuzufügen, das Hex-Werte hat, jedoch habe ich einige Probleme.Bytearray (Byte-Objekt) kann Zeitstempel nicht anfügen

Mein Byte obejct (Daten), die i 0 um einen Zeitstempel Index angehängt werden soll, sieht aus, als solche:

b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\xc2\xf5(\x00\x00\x00\x00x\x00\x00\x00!\xa1\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\xf5\x00\x00\x00}\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\xe0\x0e\x00 \xa1\x07\x00\xac\r\x00\x00P\xc3\x00\x00o\x12\x83\x00"\x00\x00\x00P\xc3\x00\x00)\\\x8f\x02\xac\x00\x00\x00\xe4\x14\x1d-B\xcff-\x8f\xc2\xf5(\xebQP\xc3(\\\xccLx\x00\x86qd\x00L\x1d}\x00\xf5\x00L\x1d\xb5\x012\x00\x10\'\xcc\x0c\x00\x00\x00\x00\x00\x00l\xe7\xfb)\x00\x00\x00\x00`\xc2\xf5(\xd0\x07\xd0\x07\xfa\x00\xfa\x00\xd0\x07\xd0\x07\x01\x00\x01\x00\xc4\t\xc4\t\xc7\x01\x00\x00\xd0\x07\xee\x02\x8f\xc2\xf5(+\xf6\x97)\xc4\tzT\x05\x02\xb8\x0b\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\x00\x08<\x0f2\x00\n\x01K\x00\x00\x00\xc4\t\x00\x04\[email protected]\x01\x00\x00\x00' 

ich versucht habe, einen Zeitstempel auf diese Weise einzufügen:

import struct, time 
import numpy as np 
g = bytearray(data) 
time_ = struct.pack("I",int(time.time())) 
g.append(int(time_)) 

Meine Fehler sind die folgenden:

Valueerror: invalid literal für int() mit der Basis 10: b '\ x11 \ xb2 \ x90X'

Wie kann ich darüber gehen?

+0

Sie konvertieren die Anzahl an Bytes bereits, so gibt es keine Notwendigkeit, zu versuchen, es zu konvertieren zurück in eine Zahl, aber Sie sollten Sie klären, wo genau versuche den Wert anzugeben. –

Antwort

0
In [878]: g=bytearray([]) 
In [879]: import struct, time 
In [880]: time_ = struct.pack("I",int(time.time())) 
In [881]: time_ 
Out[881]: b'U\xc5\x90X' 

Der Fehler wird durch den Versuch erzeugt time_ als eine ganze Zahl zu interpretieren:

In [886]: int(time_) 
... 
ValueError: invalid literal for int() with base 10: b'U\xc5\x90X' 

Aber anhängt time_ funktioniert auch nicht, weil es mehrere Bytes hat:

In [882]: g.append(time_) 
... 
TypeError: an integer is required 
In [883]: g.append? 
Signature: g.append(item, /) 
Docstring: 
Append a single item to the end of the bytearray. 

Aber verlängern funktioniert:

In [884]: g.extend(time_) 
In [885]: g 
Out[885]: bytearray(b'U\xc5\x90X') 

int(time) eine ganze Zahl, die 4 Byte belegt:

In [887]: int(time.time()) 
Out[887]: 1485882974 
In [888]: len(time_) 
Out[888]: 4